From dafe4d339d4c1c2f4246ec4940eed5f1ebab8232 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Mon, 2 Dec 2024 09:38:01 +0530 Subject: [PATCH 01/76] Include HTTP error codes in the findOne method (#250) * Include HTTP error codes in the findOne method * Added testcases --- CHANGELOG.md | 5 +++ package-lock.json | 4 +- package.json | 2 +- src/core/modules/query.js | 16 ++++++-- test/entry/findone.js | 56 ++++++++++++++++++++++++++++ test/typescript/asset-query.test.ts | 4 +- test/typescript/entry.test.ts | 4 +- test/typescript/live-preview.test.ts | 6 +++ 8 files changed, 86 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e88349c..59d6b00b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## Change log +### Version: 3.23.0 +#### Date: December-05-2024 +##### Enhancement: + - Added HTTP error codes in the findOne method + ### Version: 3.22.2 #### Date: November-18-2024 ##### Fix: diff --git a/package-lock.json b/package-lock.json index d121dbe1..96fa0353 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.22.2", + "version": "3.23.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.22.2", + "version": "3.23.0", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.12", diff --git a/package.json b/package.json index b1e0c2b2..5abbc7dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.22.2", + "version": "3.23.0", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { diff --git a/src/core/modules/query.js b/src/core/modules/query.js index 7194d51a..f81738dd 100755 --- a/src/core/modules/query.js +++ b/src/core/modules/query.js @@ -828,7 +828,6 @@ export default class Query extends Entry { host = this.config.protocol + "://" + this.live_preview.host + '/' + this.config.version } const url = getRequestUrl(this.type, this.config, this.content_type_uid, host) - this.singleEntry = true; this._query.limit = 1; this.requestParams = { @@ -840,8 +839,17 @@ export default class Query extends Entry { query: this._query } }; - var options = Utils.mergeDeep({}, this.fetchOptions); - return Utils.sendRequest(Utils.mergeDeep({}, this), options); + const options = Utils.mergeDeep({}, this.fetchOptions); + return Utils.sendRequest(Utils.mergeDeep({}, this), options).catch(error => { + // Add HTTP status code to the error object if it exists + if (error.status) { + return Promise.reject({ + ...error, + http_code: error.status, // Adding the HTTP status code explicitly + http_message: error.statusText || 'An error occurred' + }); + } + return Promise.reject(error); // Fallback for other errors + }); } - } \ No newline at end of file diff --git a/test/entry/findone.js b/test/entry/findone.js index a1a3a052..e082486e 100755 --- a/test/entry/findone.js +++ b/test/entry/findone.js @@ -738,4 +738,60 @@ test('findOne: .except() - For the reference - Array', function(assert) { assert.fail("findOne: .except() - For the reference - Array"); assert.end(); }); +}); +/*! + * HTTP Error Handling + * !*/ + +test('findOne: should handle 404 Not Found error', function(assert) { + const Query = Stack.ContentType(contentTypes.invalid_type).Query(); + + Query + .toJSON() + .findOne() + .then(function success() { + assert.fail("Expected 404 error but got a successful response."); + assert.end(); + }, function error(err) { + assert.equal(err.http_code, 404, 'Should return HTTP status 404.'); + assert.ok(err.http_message, 'Error message should be present.'); + console.error("Error:", err.http_message); + assert.end(); + }); +}); + +test('findOne: should handle 401 Unauthorized error', function(assert) { + Stack.headers = { authorization: 'InvalidAPIKey' }; // Simulating an invalid API key + const Query = Stack.ContentType(contentTypes.source).Query(); + + Query + .toJSON() + .findOne() + .then(function success() { + assert.fail("Expected 401 error but got a successful response."); + assert.end(); + }, function error(err) { + assert.equal(err.http_code, 401, 'Should return HTTP status 401.'); + assert.ok(err.http_message, 'Error message should be present.'); + console.error("Error:", err.http_message); + assert.end(); + }); +}); + +test('findOne: should handle 500 Internal Server Error', function(assert) { + const mockStack = Contentstack.Stack({ ...init.stack, host: 'invalid.host' }); // Simulating a server error + const Query = mockStack.ContentType(contentTypes.source).Query(); + + Query + .toJSON() + .findOne() + .then(function success() { + assert.fail("Expected 500 error but got a successful response."); + assert.end(); + }, function error(err) { + assert.equal(err.http_code, 500, 'Should return HTTP status 500.'); + assert.ok(err.http_message, 'Error message should be present.'); + console.error("Error:", err.http_message); + assert.end(); + }); }); \ No newline at end of file diff --git a/test/typescript/asset-query.test.ts b/test/typescript/asset-query.test.ts index 723b3dd2..d2b79986 100644 --- a/test/typescript/asset-query.test.ts +++ b/test/typescript/asset-query.test.ts @@ -118,8 +118,8 @@ describe('Asset Query Test', () => { expect(assetQuery._query).toEqual({"include_reference_content_type_uid": true, query:{} }); done() }); - - test('Asset Query include owner test', done => { + // The includeOwner function is deprecated. + test.skip('Asset Query include owner test', done => { const assetQuery = makeAssetQuery().includeOwner() expect(assetQuery._query).toEqual({"include_owner": true, query:{} }); done() diff --git a/test/typescript/entry.test.ts b/test/typescript/entry.test.ts index 910e0815..033a7439 100644 --- a/test/typescript/entry.test.ts +++ b/test/typescript/entry.test.ts @@ -123,8 +123,8 @@ describe('Entry Test', () => { expect(entry._query).toEqual({"include_fallback": true}); done() }); - - test('Entry include owner test', done => { + // The includeOwner function is deprecated. + test.skip('Entry include owner test', done => { const entry = makeEntry().includeOwner() expect(entry._query).toEqual({"include_owner": true}); done() diff --git a/test/typescript/live-preview.test.ts b/test/typescript/live-preview.test.ts index 8ece36c6..fdffb35f 100644 --- a/test/typescript/live-preview.test.ts +++ b/test/typescript/live-preview.test.ts @@ -109,6 +109,8 @@ describe("Live preview realtime URL switch", () => { stack.livePreviewQuery({ content_type_uid: "some-other-ct", live_preview: "ser", + preview_timestamp: Date.now().toString(), + release_id: "release_id", }); try { @@ -145,6 +147,8 @@ describe("Live preview realtime URL switch", () => { stack.livePreviewQuery({ content_type_uid: "he", live_preview: "ser", + preview_timestamp: Date.now().toString(), + release_id: "release_id", }); try { @@ -189,6 +193,8 @@ describe("Live preview realtime URL switch", () => { stack.livePreviewQuery({ content_type_uid: "he", live_preview: "ser", + preview_timestamp: Date.now().toString(), + release_id: "release_id", }); try { From a9161ab3f04f2d8e4ca6eff7147b7228b97c5c9c Mon Sep 17 00:00:00 2001 From: Vikram Kalta Date: Mon, 2 Dec 2024 23:11:01 +0000 Subject: [PATCH 02/76] fix: added fix for updateasseturl for handling jrte within blocks --- src/core/contentstack.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/core/contentstack.js b/src/core/contentstack.js index abfd157a..20a06eff 100755 --- a/src/core/contentstack.js +++ b/src/core/contentstack.js @@ -63,7 +63,19 @@ class Contentstack { } } } - x(entry[key].children); + let _entry = {...entry}; + const keys = key.split("."); + for (const k of keys) { + if (_entry[k]) _entry = _entry[k]; + else if (_entry.length) { + for (const block of _entry) { + if (block[k]) { + _entry = block[k]; + } + } + } + } + if (_entry.children) x(_entry.children); if (correspondingAsset) { correspondingAsset['href'] = item.url; } From df971ed4cf25128eca86709a636350929b2c9742 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Mon, 16 Dec 2024 16:51:54 +0530 Subject: [PATCH 03/76] dropping isomorphic-fetch and node-fetch --- package-lock.json | 1154 +++++++++++++++++++++++--------------- package.json | 1 - src/runtime/node/http.js | 4 +- src/runtime/web/http.js | 4 +- 4 files changed, 691 insertions(+), 472 deletions(-) diff --git a/package-lock.json b/package-lock.json index 96fa0353..1fa04848 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^11.1.5", - "isomorphic-fetch": "^3.0.0", "localStorage": "1.0.4", "qs": "^6.13.0" }, @@ -85,9 +84,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", "dev": true, "license": "MIT", "engines": { @@ -126,14 +125,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -155,20 +154,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", @@ -209,14 +194,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", - "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -348,20 +333,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", @@ -436,13 +407,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -1059,13 +1030,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { @@ -1208,15 +1178,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1787,17 +1756,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", + "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1806,9 +1775,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "dev": true, "license": "MIT", "dependencies": { @@ -1827,9 +1796,9 @@ "license": "MIT" }, "node_modules/@contentstack/utils": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.13.tgz", - "integrity": "sha512-Lp4UIHMdSxMjCmcK93L987Kxa/wnucRlR7CjVBMd1bD8auJSPFh7E3aP9fnvzjzSWockBRYbXkOq6KLojgXlPA==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.15.tgz", + "integrity": "sha512-m/FNx8LwSquMWo+KQ+zyBALEQTeFuldpLkqTrWXPEtmkPMCNnrF3aLcYHmcpLs7B1nux3wPRD6njhMDUU57giQ==", "license": "MIT" }, "node_modules/@discoveryjs/json-ext": { @@ -2197,9 +2166,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "license": "MIT", "dependencies": { @@ -2261,9 +2230,9 @@ } }, "node_modules/@jsdoc/salty": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz", - "integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz", + "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2757,13 +2726,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/@types/promise.allsettled": { @@ -3317,20 +3286,19 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -3390,9 +3358,9 @@ } }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dev": true, "license": "MIT", "dependencies": { @@ -3681,6 +3649,22 @@ "dev": true, "license": "MIT" }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -3712,9 +3696,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", "dev": true, "funding": [ { @@ -3732,9 +3716,9 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { @@ -3792,16 +3776,45 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -3831,9 +3844,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001680", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", - "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", + "version": "1.0.30001689", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz", + "integrity": "sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==", "dev": true, "funding": [ { @@ -4340,9 +4353,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -4453,9 +4466,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -4530,6 +4543,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -4727,9 +4741,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -4752,6 +4766,20 @@ "ignored": "bin/ignored" } }, + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -4793,9 +4821,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.57", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.57.tgz", - "integrity": "sha512-xS65H/tqgOwUBa5UmOuNSLuslDo7zho0y/lgQw35pnrqiZh7UOWHCeL/Bt6noJATbA6tpQJGCifsFsIRZj1Fqg==", + "version": "1.5.73", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz", + "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==", "dev": true, "license": "ISC" }, @@ -4902,58 +4930,60 @@ } }, "node_modules/es-abstract": { - "version": "1.23.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.4.tgz", - "integrity": "sha512-HR1gxH5OaiN7XH7uiWH0RLw0RcFySiSoW1ctxmD1ahTw3uGBtkmm/ng0tDU1OtYx5OK6EOL5Y6O21cDflG3Jcg==", + "version": "1.23.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.6.tgz", + "integrity": "sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA==", "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "data-view-buffer": "^1.0.1", "data-view-byte-length": "^1.0.1", "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.7", + "get-intrinsic": "^1.2.6", "get-symbol-description": "^1.0.2", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", + "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", + "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", + "is-string": "^1.1.1", "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.0.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.5", "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "safe-array-concat": "^1.1.3", + "safe-regex-test": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.2", "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", + "typed-array-byte-offset": "^1.0.3", + "typed-array-length": "^1.0.7", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -4970,13 +5000,10 @@ "license": "MIT" }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -5022,7 +5049,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -5047,15 +5073,15 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -5304,9 +5330,9 @@ } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "license": "MIT", "dependencies": { @@ -5329,7 +5355,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -5344,6 +5370,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { @@ -5364,12 +5394,28 @@ "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, "license": "MIT" }, + "node_modules/express/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5436,6 +5482,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/fetch-mock-jest/-/fetch-mock-jest-1.5.1.tgz", "integrity": "sha512-+utwzP8C+Pax1GSka3nFXILWMY3Er2L+s090FOgqVNrNCPp0fDqgXnAHAJf12PLHi0z4PhcTaZNTz8e7K3fjqQ==", + "deprecated": "Use https://www.npmjs.com/package/@fetch-mock/jest instead. The underlying version of fetch-mock will also need upgrading: see https://www.wheresrhys.co.uk/fetch-mock/docs/Usage/upgrade-guide", "dev": true, "license": "MIT", "dependencies": { @@ -5498,35 +5545,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fetch-mock-jest/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/fetch-mock-jest/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/fetch-mock-jest/node_modules/whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -5772,16 +5790,17 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.7.tgz", + "integrity": "sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -5821,16 +5840,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -5963,12 +5987,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6015,6 +6039,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -6024,10 +6049,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -6036,9 +6065,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -6224,15 +6253,15 @@ "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6259,14 +6288,14 @@ } }, "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6299,28 +6328,47 @@ "dev": true, "license": "MIT" }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6350,9 +6398,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.0.tgz", + "integrity": "sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==", "dev": true, "license": "MIT", "dependencies": { @@ -6366,12 +6414,14 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -6382,13 +6432,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6420,6 +6471,22 @@ "dev": true, "license": "MIT" }, + "node_modules/is-finalizationregistry": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", + "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -6440,6 +6507,22 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -6477,13 +6560,14 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6542,14 +6626,16 @@ } }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -6598,13 +6684,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6620,13 +6707,15 @@ "license": "MIT" }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6651,14 +6740,47 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6701,16 +6823,6 @@ "node": ">=0.10.0" } }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -7863,9 +7975,9 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -8493,6 +8605,15 @@ "node": ">= 12" } }, + "node_modules/math-intrinsics": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", + "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -8770,26 +8891,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -8798,9 +8899,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, @@ -9584,9 +9685,9 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" @@ -9733,6 +9834,29 @@ "node": ">= 0.10" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz", + "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "dunder-proto": "^1.0.0", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -9799,16 +9923,16 @@ } }, "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -9824,9 +9948,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz", - "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9836,6 +9960,19 @@ "regjsparser": "bin/parser" } }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -9877,13 +10014,13 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.9", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.9.tgz", + "integrity": "sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -9918,9 +10055,9 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", "engines": { @@ -9965,15 +10102,16 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -10005,15 +10143,15 @@ "license": "MIT" }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -10029,9 +10167,9 @@ "license": "MIT" }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, "license": "MIT", "dependencies": { @@ -10041,7 +10179,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -10140,6 +10278,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -10223,15 +10362,69 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -10377,13 +10570,14 @@ } }, "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dev": true, "license": "MIT", "dependencies": { - "internal-slot": "^1.0.4" + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -10503,16 +10697,19 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10522,16 +10719,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10807,6 +11008,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tape/node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/tape/node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -10818,9 +11036,9 @@ } }, "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10837,17 +11055,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -10871,33 +11089,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -10913,32 +11104,6 @@ "node": ">= 10.13.0" } }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "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, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -11042,10 +11207,14 @@ } }, "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } }, "node_modules/ts-jest": { "version": "29.2.5", @@ -11192,9 +11361,9 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", + "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", "dev": true, "license": "MIT", "dependencies": { @@ -11203,7 +11372,8 @@ "for-each": "^0.3.3", "gopd": "^1.0.1", "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.13", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -11213,18 +11383,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -11328,16 +11498,19 @@ "optional": true }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11360,9 +11533,9 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, @@ -11538,23 +11711,24 @@ } }, "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", "dev": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.14.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", @@ -11781,12 +11955,6 @@ "node": ">=18" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT" - }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -11797,13 +11965,15 @@ } }, "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "node_modules/which": { @@ -11823,26 +11993,76 @@ } }, "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz", + "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 5abbc7dc..bf319da4 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,6 @@ "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^11.1.5", - "isomorphic-fetch": "^3.0.0", "localStorage": "1.0.4", "qs": "^6.13.0" } diff --git a/src/runtime/node/http.js b/src/runtime/node/http.js index a8529d91..5c838183 100755 --- a/src/runtime/node/http.js +++ b/src/runtime/node/http.js @@ -1,6 +1,6 @@ import ES6Promise from 'es6-promise'; -import fetch from 'node-fetch'; +// import fetch from 'node-fetch'; ES6Promise.polyfill(); -export default fetch; \ No newline at end of file +export default fetch; // fetch API available in Node.js 18 and later \ No newline at end of file diff --git a/src/runtime/web/http.js b/src/runtime/web/http.js index 98ccfdf3..44aa7863 100755 --- a/src/runtime/web/http.js +++ b/src/runtime/web/http.js @@ -1,5 +1,5 @@ import ES6Promise from 'es6-promise'; -import fetch from 'isomorphic-fetch'; +// import fetch from 'isomorphic-fetch'; ES6Promise.polyfill(); -export default fetch; \ No newline at end of file +export default fetch; // fetch API available in Node.js 18 and later \ No newline at end of file From 499b179d9a12fd9eed00f4bdb250c9777bf80c2c Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Mon, 16 Dec 2024 16:56:31 +0530 Subject: [PATCH 04/76] version bumpt to 3.23.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1fa04848..6f7643bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.23.0", + "version": "3.23.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.23.0", + "version": "3.23.1", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.12", diff --git a/package.json b/package.json index bf319da4..d1cfdaff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.23.0", + "version": "3.23.1", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { From 677abe5d7c003aafbe458652f4614732fe299b0e Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 17 Dec 2024 12:21:55 +0530 Subject: [PATCH 05/76] removed commented lines --- src/runtime/node/http.js | 1 - src/runtime/web/http.js | 1 - 2 files changed, 2 deletions(-) diff --git a/src/runtime/node/http.js b/src/runtime/node/http.js index 5c838183..f663174f 100755 --- a/src/runtime/node/http.js +++ b/src/runtime/node/http.js @@ -1,5 +1,4 @@ import ES6Promise from 'es6-promise'; -// import fetch from 'node-fetch'; ES6Promise.polyfill(); diff --git a/src/runtime/web/http.js b/src/runtime/web/http.js index 44aa7863..ea9ced65 100755 --- a/src/runtime/web/http.js +++ b/src/runtime/web/http.js @@ -1,5 +1,4 @@ import ES6Promise from 'es6-promise'; -// import fetch from 'isomorphic-fetch'; ES6Promise.polyfill(); export default fetch; // fetch API available in Node.js 18 and later \ No newline at end of file From 894080ab8a3aed88f8395fb62cf3bacbd0334eff Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Tue, 17 Dec 2024 12:36:04 +0530 Subject: [PATCH 06/76] Updated error codes in testcases --- test/entry/findone.js | 38 +++++++++----------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/test/entry/findone.js b/test/entry/findone.js index e082486e..130d336e 100755 --- a/test/entry/findone.js +++ b/test/entry/findone.js @@ -743,24 +743,23 @@ test('findOne: .except() - For the reference - Array', function(assert) { * HTTP Error Handling * !*/ -test('findOne: should handle 404 Not Found error', function(assert) { - const Query = Stack.ContentType(contentTypes.invalid_type).Query(); +test('findOne: should handle 422 Unprocessable Entity error', function(assert) { + const Query = Stack.ContentType("invalid_content_type").Query(); Query .toJSON() .findOne() .then(function success() { - assert.fail("Expected 404 error but got a successful response."); + assert.fail("Expected 422 error but got a successful response."); assert.end(); }, function error(err) { - assert.equal(err.http_code, 404, 'Should return HTTP status 404.'); - assert.ok(err.http_message, 'Error message should be present.'); - console.error("Error:", err.http_message); + assert.equal(err.http_code, 422, 'Should return HTTP status 422.'); + assert.ok(err.http_message, 'Unprocessable Entity'); assert.end(); }); }); -test('findOne: should handle 401 Unauthorized error', function(assert) { +test('findOne: should handle 412 Unauthorized error', function(assert) { Stack.headers = { authorization: 'InvalidAPIKey' }; // Simulating an invalid API key const Query = Stack.ContentType(contentTypes.source).Query(); @@ -768,30 +767,11 @@ test('findOne: should handle 401 Unauthorized error', function(assert) { .toJSON() .findOne() .then(function success() { - assert.fail("Expected 401 error but got a successful response."); + assert.fail("Expected 412 error but got a successful response."); assert.end(); }, function error(err) { - assert.equal(err.http_code, 401, 'Should return HTTP status 401.'); - assert.ok(err.http_message, 'Error message should be present.'); - console.error("Error:", err.http_message); + assert.equal(err.http_code, 412, 'Should return HTTP status 412.'); + assert.ok(err.http_message, 'Precondition Failed.'); assert.end(); }); }); - -test('findOne: should handle 500 Internal Server Error', function(assert) { - const mockStack = Contentstack.Stack({ ...init.stack, host: 'invalid.host' }); // Simulating a server error - const Query = mockStack.ContentType(contentTypes.source).Query(); - - Query - .toJSON() - .findOne() - .then(function success() { - assert.fail("Expected 500 error but got a successful response."); - assert.end(); - }, function error(err) { - assert.equal(err.http_code, 500, 'Should return HTTP status 500.'); - assert.ok(err.http_message, 'Error message should be present.'); - console.error("Error:", err.http_message); - assert.end(); - }); -}); \ No newline at end of file From b0c92569f761ac85899cd069aa141b24d0581d41 Mon Sep 17 00:00:00 2001 From: Vikram Kalta Date: Wed, 18 Dec 2024 22:22:44 +0000 Subject: [PATCH 07/76] fix: disable minification for improved debugging --- package-lock.json | 4 ++-- package.json | 2 +- webpack/webpack.common.js | 5 ++++- webpack/webpack.nativescript.js | 5 ++++- webpack/webpack.node.js | 3 +++ webpack/webpack.react-native.js | 17 ++++++++++------- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f7643bc..950a8131 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.23.1", + "version": "3.24.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.23.1", + "version": "3.24.0", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.12", diff --git a/package.json b/package.json index d1cfdaff..28fdcde6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.23.1", + "version": "3.24.0", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index f0bfbaee..625d37de 100755 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -42,6 +42,9 @@ module.exports = function(options) { protectWebpackAssets: false, cleanAfterEveryBuildPatterns: ['*.LICENSE.txt'] }) - ] + ], + optimization: { + minimize: false, // Prevents code compression/minification + }, }; } \ No newline at end of file diff --git a/webpack/webpack.nativescript.js b/webpack/webpack.nativescript.js index 479770dc..a9108a2c 100755 --- a/webpack/webpack.nativescript.js +++ b/webpack/webpack.nativescript.js @@ -50,6 +50,9 @@ module.exports = function(options) { } ], }] - } + }, + optimization: { + minimize: false, // Prevents code compression/minification + }, }); } \ No newline at end of file diff --git a/webpack/webpack.node.js b/webpack/webpack.node.js index f1178b9a..3eedabd5 100755 --- a/webpack/webpack.node.js +++ b/webpack/webpack.node.js @@ -49,5 +49,8 @@ module.exports = function(options) { }], }] }, + optimization: { + minimize: false, // Prevents code compression/minification + }, }); } \ No newline at end of file diff --git a/webpack/webpack.react-native.js b/webpack/webpack.react-native.js index de9f3fd3..1d292e49 100755 --- a/webpack/webpack.react-native.js +++ b/webpack/webpack.react-native.js @@ -29,12 +29,12 @@ module.exports = function(options) { externalsPresets: { node: true }, - optimization: { - minimize: true, - minimizer: [new TerserPlugin({ - terserOptions: { output: { ascii_only: true } } - })], - }, + // optimization: { + // minimize: true, + // minimizer: [new TerserPlugin({ + // terserOptions: { output: { ascii_only: true } } + // })], + // }, module: { rules: [{ test: /\.js?$/, @@ -57,6 +57,9 @@ module.exports = function(options) { } ], }] - } + }, + optimization: { + minimize: false, // Prevents code compression/minification + }, }); } \ No newline at end of file From c2215c640c5b852f52772dbf51ead0454b3e499e Mon Sep 17 00:00:00 2001 From: Kartik Date: Thu, 9 Jan 2025 14:47:03 +0530 Subject: [PATCH 08/76] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e7ef966..a17ed013 100755 --- a/README.md +++ b/README.md @@ -282,7 +282,7 @@ data.then(function(sync_data, err) { ##### Advanced sync queries You can use advanced sync queries to fetch custom results while performing initial sync. -[Read advanced sync queries documentation](https://www.contentstack.com/docs/guide/synchronization/using-the-sync-api-with-javascript-sdk#advanced-sync-queries) +[Read advanced sync queries documentation](https://www.contentstack.com/docs/developers/use-the-sync-apis-with-sdk/use-sync-api-with-javascript-sdk#advanced-sync-queries) ### Helpful Links From 869ec7c9123eb383b47db4b84ce721fc5f83461a Mon Sep 17 00:00:00 2001 From: Vikram Kalta Date: Thu, 9 Jan 2025 22:47:33 +0000 Subject: [PATCH 09/76] fix: setting minimize to true for browser --- webpack/webpack.web.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/webpack/webpack.web.js b/webpack/webpack.web.js index 23628b50..94bba535 100755 --- a/webpack/webpack.web.js +++ b/webpack/webpack.web.js @@ -54,6 +54,9 @@ module.exports = function(options) { new webpack.ProvidePlugin({ global: require.resolve('./../global.js') }) - ] + ], + optimization: { + minimize: true, + }, }); } \ No newline at end of file From eb9cff9a74746ac9e7be0936e8e964c715c25da3 Mon Sep 17 00:00:00 2001 From: raj pandey Date: Mon, 13 Jan 2025 16:41:20 +0530 Subject: [PATCH 10/76] verison bump --- package-lock.json | 884 +++++++++++++++++++++------------------------- package.json | 32 +- 2 files changed, 409 insertions(+), 507 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f7643bc..932b574d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,53 +1,53 @@ { "name": "contentstack", - "version": "3.23.1", + "version": "3.23.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.23.1", + "version": "3.23.2", "license": "MIT", "dependencies": { - "@contentstack/utils": "^1.3.12", + "@contentstack/utils": "^1.3.15", "cheerio": "^1.0.0", "es6-promise": "^4.2.8", - "fetch-mock": "^11.1.5", + "fetch-mock": "^12.2.0", "localStorage": "1.0.4", - "qs": "^6.13.0" + "qs": "^6.13.1" }, "devDependencies": { - "@babel/core": "^7.25.9", - "@babel/preset-env": "^7.25.9", - "@babel/runtime": "^7.25.9", + "@babel/core": "^7.26.0", + "@babel/preset-env": "^7.26.0", + "@babel/runtime": "^7.26.0", "@slack/bolt": "^3.22.0", "@types/jest": "^26.0.24", "babel-loader": "^9.2.1", "clean-webpack-plugin": "^4.0.0", - "compression-webpack-plugin": "^10.0.0", - "dotenv": "^16.4.5", + "compression-webpack-plugin": "^11.1.0", + "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", "fetch-mock-jest": "^1.5.1", "http-proxy-agent": "^3.0.0", "jest": "^29.7.0", - "jest-html-reporters": "^2.1.7", + "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", "jshint": "^2.13.6", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", - "nodemailer": "^6.9.15", + "nodemailer": "^6.9.16", "string-replace-loader": "^3.1.0", "tap-html": "^1.1.0", "tap-json": "1.0.0", "tape": "4.17.0", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "ts-jest": "^29.2.5", "typescript": "^4.9.5", - "uglify-js": "2.8.29", - "webpack": "^5.95.0", + "uglify-js": "3.19.3", + "webpack": "^5.97.1", "webpack-cli": "^4.10.0", - "webpack-md5-hash": "0.0.5", - "webpack-merge": "4.1.5", + "webpack-md5-hash": "0.0.6", + "webpack-merge": "4.2.2", "webpack-node-externals": "^3.0.0" }, "engines": { @@ -84,9 +84,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", "dev": true, "license": "MIT", "engines": { @@ -125,14 +125,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -155,13 +155,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -288,9 +288,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, "license": "MIT", "engines": { @@ -316,15 +316,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -407,13 +407,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.26.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -844,13 +844,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1264,13 +1264,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.5.tgz", + "integrity": "sha512-OHqczNm4NTQlW1ghrVY43FPoiRzbmzNVbcgVnMKZN/RQYezHUSdjACjaX50CD3B7UIAjv39+MlsrVDb3v741FA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1756,17 +1756,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.5", "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", + "@babel/types": "^7.26.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1775,9 +1775,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", "dev": true, "license": "MIT", "dependencies": { @@ -2726,9 +2726,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3126,21 +3126,6 @@ "ajv": "^8.8.2" } }, - "node_modules/align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -3218,14 +3203,14 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -3265,18 +3250,19 @@ } }, "node_modules/array.prototype.map": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.7.tgz", - "integrity": "sha512-XpcFfLoBEAhezrrNw1V+yLXkE7M6uR7xJEsxbG6c/V9v043qurwVJB9r9UTnoSioFDoz1i1VOydpWGmJpfVZbg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.8.tgz", + "integrity": "sha512-YocPM7bYYu2hXGxWpb5vwZ8cMeudNHYtYBcUDY4Z1GWa53qcnQMWSl25jeBHNzitjl9HW2AWW4ro/S/nftUaOQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-array-method-boxes-properly": "^1.0.0", "es-object-atoms": "^1.0.0", - "is-string": "^1.0.7" + "is-string": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -3331,16 +3317,6 @@ "dev": true, "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -3696,9 +3672,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", - "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -3844,9 +3820,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001689", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz", - "integrity": "sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "dev": true, "funding": [ { @@ -3877,20 +3853,6 @@ "node": ">= 10" } }, - "node_modules/center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4063,16 +4025,6 @@ "node": ">=6" } }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4214,17 +4166,17 @@ } }, "node_modules/compression-webpack-plugin": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz", - "integrity": "sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz", + "integrity": "sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==", "dev": true, "license": "MIT", "dependencies": { - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -4298,9 +4250,9 @@ "license": "MIT" }, "node_modules/core-js": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", - "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4310,13 +4262,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", - "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.2" + "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -4406,15 +4358,15 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4424,31 +4376,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -4483,16 +4435,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -4727,9 +4669,9 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -4767,12 +4709,12 @@ } }, "node_modules/dunder-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", - "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", + "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" }, @@ -4821,9 +4763,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.73", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz", - "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==", + "version": "1.5.80", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz", + "integrity": "sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==", "dev": true, "license": "ISC" }, @@ -4881,9 +4823,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4930,28 +4872,29 @@ } }, "node_modules/es-abstract": { - "version": "1.23.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.6.tgz", - "integrity": "sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", + "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.7", - "get-intrinsic": "^1.2.6", - "get-symbol-description": "^1.0.2", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", @@ -4959,31 +4902,33 @@ "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.4", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.3", + "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", - "is-typed-array": "^1.1.13", + "is-typed-array": "^1.1.15", "is-weakref": "^1.1.0", - "math-intrinsics": "^1.0.0", + "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.3", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.16" + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -5039,9 +4984,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", "dev": true, "license": "MIT" }, @@ -5058,15 +5003,16 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -5431,10 +5377,20 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { @@ -5458,24 +5414,19 @@ } }, "node_modules/fetch-mock": { - "version": "11.1.5", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-11.1.5.tgz", - "integrity": "sha512-KHmZDnZ1ry0pCTrX4YG5DtThHi0MH+GNI9caESnzX/nMJBrvppUHMvLx47M0WY9oAtKOMiPfZDRpxhlHg89BOA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.0.tgz", + "integrity": "sha512-XjgxM582kB0SzPOqH2UdGTwSqga8A8aBPjxcYr0wTeOlCWpZoK6zBrPzltECUTu6Zt3VTWafmKF599LN9BRN5Q==", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", "dequal": "^2.0.3", "glob-to-regexp": "^0.4.1", - "is-subset": "^0.1.1", + "is-subset-of": "^3.1.10", "regexparam": "^3.0.0" }, "engines": { - "node": ">=8.0.0" - }, - "peerDependenciesMeta": { - "node-fetch": { - "optional": true - } + "node": ">=18.11.0" } }, "node_modules/fetch-mock-jest": { @@ -5743,19 +5694,18 @@ } }, "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/fs.realpath": { @@ -5790,13 +5740,14 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.7.tgz", - "integrity": "sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", @@ -5840,21 +5791,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", + "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5873,6 +5824,19 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -5887,15 +5851,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -6016,11 +5980,14 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6305,14 +6272,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -6329,13 +6297,16 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6398,9 +6369,9 @@ } }, "node_modules/is-core-module": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.0.tgz", - "integrity": "sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { @@ -6472,13 +6443,13 @@ "license": "MIT" }, "node_modules/is-finalizationregistry": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", - "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6508,13 +6479,16 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6536,19 +6510,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6658,13 +6619,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6704,8 +6665,19 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", + "dev": true, "license": "MIT" }, + "node_modules/is-subset-of": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/is-subset-of/-/is-subset-of-3.1.10.tgz", + "integrity": "sha512-avvaYgVmYWyaZ1NDFiv4y9JGkrE2je3op1Po4VYKKJKR8H2qVPsg1GZuuXl5elCTxTlwAIsrAjWAs4BVrISFRw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "typedescriptor": "3.0.2" + } + }, "node_modules/is-symbol": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", @@ -6725,13 +6697,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -6770,14 +6742,14 @@ } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -7320,13 +7292,13 @@ } }, "node_modules/jest-html-reporters": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/jest-html-reporters/-/jest-html-reporters-2.1.7.tgz", - "integrity": "sha512-qYly47l7Q59bjVWpGQ9grSYaNIAtS1L+l8jQrC24iXWKRy3N/pkKTklGtcdqsZ8hhiGQPI9skByl/63GNj0UeQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/jest-html-reporters/-/jest-html-reporters-3.1.7.tgz", + "integrity": "sha512-GTmjqK6muQ0S0Mnksf9QkL9X9z2FGIpNSxC52E0PHDzjPQ1XDu2+XTI3B3FS43ZiUzD1f354/5FfwbNIBzT7ew==", "dev": true, "license": "MIT", "dependencies": { - "fs-extra": "^9.0.1", + "fs-extra": "^10.0.0", "open": "^8.0.3" } }, @@ -8290,14 +8262,11 @@ } }, "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { "node": ">=0.10.0" } @@ -8322,16 +8291,6 @@ "node": ">=6" } }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -8490,16 +8449,6 @@ "dev": true, "license": "MIT" }, - "node_modules/longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -8606,9 +8555,9 @@ } }, "node_modules/math-intrinsics": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", - "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -9013,15 +8962,17 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -9088,6 +9039,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -9835,20 +9804,20 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz", - "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "dunder-proto": "^1.0.0", - "es-abstract": "^1.23.5", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.2.0", - "which-builtin-type": "^1.2.0" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -9895,15 +9864,17 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -9973,16 +9944,6 @@ "node": ">=6" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -10014,9 +9975,9 @@ } }, "node_modules/resolve": { - "version": "1.22.9", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.9.tgz", - "integrity": "sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { @@ -10027,6 +9988,9 @@ "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10074,19 +10038,6 @@ "node": ">= 4" } }, - "node_modules/right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "align-text": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -10142,6 +10093,23 @@ ], "license": "MIT" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -10308,6 +10276,21 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -10328,16 +10311,6 @@ "node": ">=8" } }, - "node_modules/shallow-clone/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -11326,32 +11299,32 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -11361,19 +11334,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", - "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "reflect.getprototypeof": "^1.0.6" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -11403,6 +11376,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedescriptor": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/typedescriptor/-/typedescriptor-3.0.2.tgz", + "integrity": "sha512-hyVbaCUd18UiXk656g/imaBLMogpdijIEpnhWYrSda9rhvO4gOU16n2nh7xG5lv/rjumnZzGOdz0CEGTmFe0fQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT" + }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -11425,78 +11405,18 @@ "license": "MIT" }, "node_modules/uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, "license": "BSD-2-Clause", - "dependencies": { - "source-map": "~0.5.1", - "yargs": "~3.10.0" - }, "bin": { "uglifyjs": "bin/uglifyjs" }, "engines": { "node": ">=0.8.0" - }, - "optionalDependencies": { - "uglify-to-browserify": "~1.0.0" - } - }, - "node_modules/uglify-js/node_modules/camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" } }, - "node_modules/uglify-js/node_modules/cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", - "dev": true, - "license": "ISC", - "dependencies": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-js/node_modules/yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - }, - "node_modules/uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -11604,9 +11524,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "funding": [ { @@ -11625,7 +11545,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -11838,9 +11758,9 @@ } }, "node_modules/webpack-md5-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/webpack-md5-hash/-/webpack-md5-hash-0.0.5.tgz", - "integrity": "sha512-D58vvw1wsOl+pBctRjHoInq4CBsVHIkyjF9nyUo1yGJunGtaxjkMLhHTPXwGwC/Xe8MR9rKLbdQvfnIt/hBu4w==", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/webpack-md5-hash/-/webpack-md5-hash-0.0.6.tgz", + "integrity": "sha512-HrQ0AJpeXHRa3IjsgyyEfTx8EqYs5y/4x/WklSYsNDcqBixHzCkrmJV5U+4ks+sx7ycKoIdqWLdyuk913FCS+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -11848,13 +11768,13 @@ } }, "node_modules/webpack-merge": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.5.tgz", - "integrity": "sha512-sVcM+MMJv6DO0C0GLLltx8mUlGMKXE0zBsuMqZ9jz2X9gsekALw6Rs0cAfTWc97VuWS6NpVUa78959zANnMMLQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.5" + "lodash": "^4.17.15" } }, "node_modules/webpack-node-externals": { @@ -12060,16 +11980,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz", - "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -12086,25 +12007,6 @@ "dev": true, "license": "MIT" }, - "node_modules/window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", - "dev": true, - "license": "MIT/X11", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index d1cfdaff..8b0fcd49 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.23.1", + "version": "3.23.2", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { @@ -65,45 +65,45 @@ "tmp": "tmp/contentstack-3.15.0.tgz_1477830884275_0.9869455888401717" }, "devDependencies": { - "@babel/core": "^7.25.9", - "@babel/preset-env": "^7.25.9", - "@babel/runtime": "^7.25.9", + "@babel/core": "^7.26.0", + "@babel/preset-env": "^7.26.0", + "@babel/runtime": "^7.26.0", "@slack/bolt": "^3.22.0", "@types/jest": "^26.0.24", "babel-loader": "^9.2.1", "clean-webpack-plugin": "^4.0.0", - "compression-webpack-plugin": "^10.0.0", - "dotenv": "^16.4.5", + "compression-webpack-plugin": "^11.1.0", + "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", "fetch-mock-jest": "^1.5.1", "http-proxy-agent": "^3.0.0", "jest": "^29.7.0", - "jest-html-reporters": "^2.1.7", + "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", "jshint": "^2.13.6", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", - "nodemailer": "^6.9.15", + "nodemailer": "^6.9.16", "string-replace-loader": "^3.1.0", "tap-html": "^1.1.0", "tap-json": "1.0.0", "tape": "4.17.0", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "ts-jest": "^29.2.5", "typescript": "^4.9.5", - "uglify-js": "2.8.29", - "webpack": "^5.95.0", + "uglify-js": "3.19.3", + "webpack": "^5.97.1", "webpack-cli": "^4.10.0", - "webpack-md5-hash": "0.0.5", - "webpack-merge": "4.1.5", + "webpack-md5-hash": "0.0.6", + "webpack-merge": "4.2.2", "webpack-node-externals": "^3.0.0" }, "dependencies": { - "@contentstack/utils": "^1.3.12", + "@contentstack/utils": "^1.3.15", "cheerio": "^1.0.0", "es6-promise": "^4.2.8", - "fetch-mock": "^11.1.5", + "fetch-mock": "^12.2.0", "localStorage": "1.0.4", - "qs": "^6.13.0" + "qs": "^6.13.1" } } From de608da5b594d77f8859b2052c3d6cea012ee4cb Mon Sep 17 00:00:00 2001 From: raj pandey Date: Mon, 13 Jan 2025 16:43:13 +0530 Subject: [PATCH 11/76] license update --- LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index eebdf5a6..17d428ad 100755 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,7 +1,7 @@ The MIT License (MIT) -Copyright (c) 2016-2024 Contentstack +Copyright (c) 2016-2025 Contentstack Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 58c64c5f7d18dd70f034b550dccd656658067263 Mon Sep 17 00:00:00 2001 From: raj pandey Date: Sat, 18 Jan 2025 18:03:31 +0530 Subject: [PATCH 12/76] Updated slack bolt and qs --- package-lock.json | 1205 +++++++++++++------------------ package.json | 10 +- sanity-report.js | 4 +- webpack/webpack.nativescript.js | 4 +- webpack/webpack.node.js | 4 +- webpack/webpack.react-native.js | 4 +- webpack/webpack.web.js | 4 +- 7 files changed, 522 insertions(+), 713 deletions(-) diff --git a/package-lock.json b/package-lock.json index 932b574d..4fc6a97a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,13 +14,13 @@ "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", - "qs": "^6.13.1" + "qs": "^6.14.0" }, "devDependencies": { "@babel/core": "^7.26.0", "@babel/preset-env": "^7.26.0", "@babel/runtime": "^7.26.0", - "@slack/bolt": "^3.22.0", + "@slack/bolt": "^4.2.0", "@types/jest": "^26.0.24", "babel-loader": "^9.2.1", "clean-webpack-plugin": "^4.0.0", @@ -28,7 +28,7 @@ "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", "fetch-mock-jest": "^1.5.1", - "http-proxy-agent": "^3.0.0", + "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", @@ -45,9 +45,9 @@ "typescript": "^4.9.5", "uglify-js": "3.19.3", "webpack": "^5.97.1", - "webpack-cli": "^4.10.0", + "webpack-cli": "^6.0.1", "webpack-md5-hash": "0.0.6", - "webpack-merge": "4.2.2", + "webpack-merge": "6.0.1", "webpack-node-externals": "^3.0.0" }, "engines": { @@ -1264,9 +1264,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.5.tgz", - "integrity": "sha512-OHqczNm4NTQlW1ghrVY43FPoiRzbmzNVbcgVnMKZN/RQYezHUSdjACjaX50CD3B7UIAjv39+MlsrVDb3v741FA==", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dev": true, "license": "MIT", "dependencies": { @@ -1802,13 +1802,13 @@ "license": "MIT" }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.17.0" } }, "node_modules/@istanbuljs/load-nyc-config": { @@ -2303,30 +2303,26 @@ } }, "node_modules/@slack/bolt": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-3.22.0.tgz", - "integrity": "sha512-iKDqGPEJDnrVwxSVlFW6OKTkijd7s4qLBeSufoBsTM0reTyfdp/5izIQVkxNfzjHi3o6qjdYbRXkYad5HBsBog==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-4.2.0.tgz", + "integrity": "sha512-KQGUkC37t6DUR+FVglHmcUrMpdCLbY9wpZXfjW6CUNmQnINits+EeOrVN/5xPcISKJcBIhqgrarLpwU9tpESTw==", "dev": true, "license": "MIT", "dependencies": { "@slack/logger": "^4.0.0", - "@slack/oauth": "^2.6.3", - "@slack/socket-mode": "^1.3.6", + "@slack/oauth": "^3.0.2", + "@slack/socket-mode": "^2.0.3", "@slack/types": "^2.13.0", - "@slack/web-api": "^6.13.0", - "@types/express": "^4.16.1", - "@types/promise.allsettled": "^1.0.3", - "@types/tsscmp": "^1.0.0", - "axios": "^1.7.4", - "express": "^4.21.0", + "@slack/web-api": "^7.8.0", + "axios": "^1.7.8", + "express": "^5.0.0", "path-to-regexp": "^8.1.0", - "promise.allsettled": "^1.0.2", - "raw-body": "^2.3.3", + "raw-body": "^3", "tsscmp": "^1.0.6" }, "engines": { - "node": ">=14.21.3", - "npm": ">=6.14.18" + "node": ">=18", + "npm": ">=8.6.0" } }, "node_modules/@slack/logger": { @@ -2344,70 +2340,41 @@ } }, "node_modules/@slack/oauth": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-2.6.3.tgz", - "integrity": "sha512-1amXs6xRkJpoH6zSgjVPgGEJXCibKNff9WNDijcejIuVy1HFAl1adh7lehaGNiHhTWfQkfKxBiF+BGn56kvoFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@slack/logger": "^3.0.0", - "@slack/web-api": "^6.12.1", - "@types/jsonwebtoken": "^8.3.7", - "@types/node": ">=12", - "jsonwebtoken": "^9.0.0", - "lodash.isstring": "^4.0.1" - }, - "engines": { - "node": ">=12.13.0", - "npm": ">=6.12.0" - } - }, - "node_modules/@slack/oauth/node_modules/@slack/logger": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", - "integrity": "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-3.0.2.tgz", + "integrity": "sha512-MdPS8AP9n3u/hBeqRFu+waArJLD/q+wOSZ48ktMTwxQLc6HJyaWPf8soqAyS/b0D6IlvI5TxAdyRyyv3wQ5IVw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": ">=12.0.0" + "@slack/logger": "^4", + "@slack/web-api": "^7.8.0", + "@types/jsonwebtoken": "^9", + "@types/node": ">=18", + "jsonwebtoken": "^9", + "lodash.isstring": "^4" }, "engines": { - "node": ">= 12.13.0", - "npm": ">= 6.12.0" + "node": ">=18", + "npm": ">=8.6.0" } }, "node_modules/@slack/socket-mode": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-1.3.6.tgz", - "integrity": "sha512-G+im7OP7jVqHhiNSdHgv2VVrnN5U7KY845/5EZimZkrD4ZmtV0P3BiWkgeJhPtdLuM7C7i6+M6h6Bh+S4OOalA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-2.0.3.tgz", + "integrity": "sha512-aY1AhQd3HAgxLYC2Mz47dXtW6asjyYp8bJ24MWalg+qFWPaXj8VBYi+5w3rfGqBW5IxlIhs3vJTEQtIBrqQf5A==", "dev": true, "license": "MIT", "dependencies": { - "@slack/logger": "^3.0.0", - "@slack/web-api": "^6.12.1", - "@types/node": ">=12.0.0", - "@types/ws": "^7.4.7", + "@slack/logger": "^4", + "@slack/web-api": "^7.8.0", + "@types/node": ">=18", + "@types/ws": "^8", "eventemitter3": "^5", - "finity": "^0.5.4", - "ws": "^7.5.3" - }, - "engines": { - "node": ">=12.13.0", - "npm": ">=6.12.0" - } - }, - "node_modules/@slack/socket-mode/node_modules/@slack/logger": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", - "integrity": "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": ">=12.0.0" + "ws": "^8" }, "engines": { - "node": ">= 12.13.0", - "npm": ">= 6.12.0" + "node": ">= 18", + "npm": ">= 8.6.0" } }, "node_modules/@slack/types": { @@ -2422,50 +2389,30 @@ } }, "node_modules/@slack/web-api": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-6.13.0.tgz", - "integrity": "sha512-dv65crIgdh9ZYHrevLU6XFHTQwTyDmNqEqzuIrV+Vqe/vgiG6w37oex5ePDU1RGm2IJ90H8iOvHFvzdEO/vB+g==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.8.0.tgz", + "integrity": "sha512-d4SdG+6UmGdzWw38a4sN3lF/nTEzsDxhzU13wm10ejOpPehtmRoqBKnPztQUfFiWbNvSb4czkWYJD4kt+5+Fuw==", "dev": true, "license": "MIT", "dependencies": { - "@slack/logger": "^3.0.0", - "@slack/types": "^2.11.0", - "@types/is-stream": "^1.1.0", - "@types/node": ">=12.0.0", - "axios": "^1.7.4", - "eventemitter3": "^3.1.0", - "form-data": "^2.5.0", + "@slack/logger": "^4.0.0", + "@slack/types": "^2.9.0", + "@types/node": ">=18.0.0", + "@types/retry": "0.12.0", + "axios": "^1.7.8", + "eventemitter3": "^5.0.1", + "form-data": "^4.0.0", "is-electron": "2.2.2", - "is-stream": "^1.1.0", - "p-queue": "^6.6.1", - "p-retry": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0", - "npm": ">= 6.12.0" - } - }, - "node_modules/@slack/web-api/node_modules/@slack/logger": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", - "integrity": "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": ">=12.0.0" + "is-stream": "^2", + "p-queue": "^6", + "p-retry": "^4", + "retry": "^0.13.1" }, "engines": { - "node": ">= 12.13.0", - "npm": ">= 6.12.0" + "node": ">= 18", + "npm": ">= 8.6.0" } }, - "node_modules/@slack/web-api/node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -2511,27 +2458,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -2561,32 +2487,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -2614,23 +2514,6 @@ "@types/node": "*" } }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -2677,9 +2560,9 @@ "license": "MIT" }, "node_modules/@types/jsonwebtoken": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", - "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", + "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", "dev": true, "license": "MIT", "dependencies": { @@ -2711,13 +2594,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -2726,36 +2602,15 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", - "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } }, - "node_modules/@types/promise.allsettled": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/promise.allsettled/-/promise.allsettled-1.0.6.tgz", - "integrity": "sha512-wA0UT0HeT2fGHzIFV9kWpYz5mdoyLxKrTgMdZQM++5h6pYAFH73HXcQhefg24nD1yivUFEn5KU+EF4b+CXJ4Wg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.9.17", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", - "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -2763,29 +2618,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -2793,17 +2625,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/tsscmp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/tsscmp/-/tsscmp-1.0.2.tgz", - "integrity": "sha512-cy7BRSU8GYYgxjcx0Py+8lo5MthuDhlyu076KUcYzVNXL23luYgRHkMG2fIFEc6neckeh/ntP82mw+U4QjZq+g==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", "dev": true, "license": "MIT", "dependencies": { @@ -2989,37 +2814,45 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "dev": true, "license": "MIT", - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -3042,14 +2875,14 @@ "license": "Apache-2.0" }, "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { "node": ">= 0.6" @@ -3069,13 +2902,13 @@ } }, "node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -3220,9 +3053,9 @@ } }, "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", "dev": true, "license": "MIT" }, @@ -3249,28 +3082,6 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.map": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.8.tgz", - "integrity": "sha512-YocPM7bYYu2hXGxWpb5vwZ8cMeudNHYtYBcUDY4Z1GWa53qcnQMWSl25jeBHNzitjl9HW2AWW4ro/S/nftUaOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-array-method-boxes-properly": "^1.0.0", - "es-object-atoms": "^1.0.0", - "is-string": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", @@ -3345,21 +3156,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -3571,34 +3367,31 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.2.tgz", + "integrity": "sha512-SNMk0OONlQ01uk8EPeiBvTW7W4ovpL5b1O3t1sjpPgfxOQ6BqQJ6XjxinDPR79Z6HdcD5zBBwr5ssiTlgdNztQ==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", + "debug": "3.1.0", "destroy": "1.2.0", "http-errors": "2.0.0", - "iconv-lite": "0.4.24", + "iconv-lite": "0.5.2", "on-finished": "2.4.1", "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "raw-body": "^3.0.0", + "type-is": "~1.6.18" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=18" } }, "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "license": "MIT", "dependencies": { @@ -3606,9 +3399,9 @@ } }, "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", "dev": true, "license": "MIT", "dependencies": { @@ -3618,6 +3411,39 @@ "node": ">=0.10.0" } }, + "node_modules/body-parser/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3641,6 +3467,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/body-parser/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -4203,9 +4043,9 @@ } }, "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", "dev": true, "license": "MIT", "dependencies": { @@ -4243,11 +4083,14 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } }, "node_modules/core-js": { "version": "3.40.0", @@ -4763,9 +4606,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.80", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz", - "integrity": "sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==", + "version": "1.5.83", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", + "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", "dev": true, "license": "ISC" }, @@ -4937,12 +4780,24 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "node_modules/es-abstract/node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/es-define-property": { "version": "1.0.1", @@ -4962,27 +4817,6 @@ "node": ">= 0.4" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-module-lexer": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", @@ -4991,9 +4825,9 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -5236,19 +5070,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -5276,73 +5097,71 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz", + "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "accepts": "^2.0.0", + "body-parser": "^2.0.1", + "content-disposition": "^1.0.0", "content-type": "~1.0.4", "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", + "cookie-signature": "^1.2.1", + "debug": "4.3.6", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", + "finalhandler": "^2.0.0", + "fresh": "2.0.0", "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", + "merge-descriptors": "^2.0.0", "methods": "~1.1.2", + "mime-types": "^3.0.0", "on-finished": "2.4.1", + "once": "1.4.0", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", + "router": "^2.0.0", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "^1.1.0", + "serve-static": "^2.1.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", - "type-is": "~1.6.18", + "type-is": "^2.0.0", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">= 18" } }, "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, "license": "MIT" }, @@ -5543,14 +5362,14 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.0.0.tgz", + "integrity": "sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~2.0.0", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -5571,6 +5390,16 @@ "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5609,13 +5438,6 @@ "node": ">=8" } }, - "node_modules/finity": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/finity/-/finity-0.5.4.tgz", - "integrity": "sha512-3l+5/1tuw616Lgb0QBimxfdd2TqaDGpfCBpfX6EqtFmqUV3FtQnVEX4Aa62DagYEqnsTIjZcTfbq9msDbXYgyA==", - "dev": true, - "license": "MIT" - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -5658,19 +5480,41 @@ } }, "node_modules/form-data": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.2.tgz", - "integrity": "sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12", - "safe-buffer": "^5.2.1" + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/forwarded": { @@ -5684,13 +5528,13 @@ } }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/fs-extra": { @@ -5715,21 +5559,6 @@ "dev": true, "license": "ISC" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -6122,17 +5951,17 @@ } }, "node_modules/http-proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-3.0.0.tgz", - "integrity": "sha512-uGuJaBWQWDQCJI5ip0d/VTYZW0nRrlLWXA4A7P1jrsa+f77rW2yXz315oBt6zGCF6l8C2tlMxY7ffULCj+5FhA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "5", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -6235,13 +6064,13 @@ } }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/ipaddr.js": { @@ -6586,17 +6415,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -6635,13 +6469,16 @@ } }, "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { @@ -6879,30 +6716,6 @@ "node": ">=8" } }, - "node_modules/iterate-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", - "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/jake": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", @@ -8583,21 +8396,24 @@ "license": "MIT" }, "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -8633,23 +8449,10 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", + "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", "dev": true, "license": "MIT", "engines": { @@ -8657,13 +8460,13 @@ } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.0.tgz", + "integrity": "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.53.0" }, "engines": { "node": ">= 0.6" @@ -8824,9 +8627,9 @@ } }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { @@ -9540,27 +9343,6 @@ "dev": true, "license": "MIT" }, - "node_modules/promise.allsettled": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.7.tgz", - "integrity": "sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array.prototype.map": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "iterate-value": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -9654,12 +9436,12 @@ } }, "node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -9700,34 +9482,21 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", - "iconv-lite": "0.4.24", + "iconv-lite": "0.6.3", "unpipe": "1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -9791,16 +9560,16 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "license": "MIT", "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/reflect.getprototypeof": { @@ -10052,6 +9821,25 @@ "rimraf": "bin.js" } }, + "node_modules/router": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.0.0.tgz", + "integrity": "sha512-dIM5zVoG8xhC6rnSN8uoAgFARwTE7BQs8YwHEvK0VCmfxQXMaOuA1uiR1IPwsW7JyK5iTt7Od/TC9StasS2NPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-flatten": "3.0.0", + "is-promise": "4.0.0", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "^8.0.0", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -10128,6 +9916,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-regex-test/node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -10165,55 +9972,60 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", + "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.3.5", + "destroy": "^1.2.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "http-errors": "^2.0.0", + "mime-types": "^2.1.35", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/send/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/send/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/send/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, "node_modules/serialize-javascript": { @@ -10227,19 +10039,19 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.1.0.tgz", + "integrity": "sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, "node_modules/set-function-length": { @@ -10542,20 +10354,6 @@ "node": ">= 0.8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/strict-event-emitter": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.1.0.tgz", @@ -10981,23 +10779,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tape/node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tape/node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -11285,14 +11066,15 @@ } }, "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.0.tgz", + "integrity": "sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, "engines": { "node": ">= 0.6" @@ -11444,9 +11226,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "license": "MIT", "engines": { "node": ">=18.17" @@ -11685,45 +11467,40 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^12.1.0", "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "^5.82.0" }, "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -11733,28 +11510,13 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-cli/node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, "engines": { - "node": ">=10.0.0" + "node": ">=18" } }, "node_modules/webpack-md5-hash": { @@ -11768,13 +11530,18 @@ } }, "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.15" + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/webpack-node-externals": { @@ -11844,6 +11611,29 @@ "dev": true, "license": "MIT" }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -11960,6 +11750,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type/node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -12047,17 +11856,17 @@ } }, "node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { diff --git a/package.json b/package.json index 8b0fcd49..0d451a8a 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@babel/core": "^7.26.0", "@babel/preset-env": "^7.26.0", "@babel/runtime": "^7.26.0", - "@slack/bolt": "^3.22.0", + "@slack/bolt": "^4.2.0", "@types/jest": "^26.0.24", "babel-loader": "^9.2.1", "clean-webpack-plugin": "^4.0.0", @@ -76,7 +76,7 @@ "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", "fetch-mock-jest": "^1.5.1", - "http-proxy-agent": "^3.0.0", + "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", @@ -93,9 +93,9 @@ "typescript": "^4.9.5", "uglify-js": "3.19.3", "webpack": "^5.97.1", - "webpack-cli": "^4.10.0", + "webpack-cli": "^6.0.1", "webpack-md5-hash": "0.0.6", - "webpack-merge": "4.2.2", + "webpack-merge": "6.0.1", "webpack-node-externals": "^3.0.0" }, "dependencies": { @@ -104,6 +104,6 @@ "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", - "qs": "^6.13.1" + "qs": "^6.14.0" } } diff --git a/sanity-report.js b/sanity-report.js index 6189bf9a..dd962f11 100644 --- a/sanity-report.js +++ b/sanity-report.js @@ -1,5 +1,5 @@ const fs = require('fs'); -const Slack = require('@slack/bolt') +const { App } = require('@slack/bolt'); const dotenv = require('dotenv') dotenv.config() @@ -39,7 +39,7 @@ const slackMessage = ` • Total Duration: *${durationInMinutes}m ${durationInSeconds}s* ` -const app = new Slack.App({ +const app = new App({ token: process.env.SLACK_BOT_TOKEN, signingSecret: process.env.SLACK_SIGNING_SECRET }) diff --git a/webpack/webpack.nativescript.js b/webpack/webpack.nativescript.js index 479770dc..9ff15a20 100755 --- a/webpack/webpack.nativescript.js +++ b/webpack/webpack.nativescript.js @@ -1,13 +1,13 @@ 'use strict'; const path = require('path'); -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); var nodeExternals = require('webpack-node-externals'); const commonConfig = require('./webpack.common.js'); module.exports = function(options) { - return webpackMerge(commonConfig(), { + return merge(commonConfig(), { output: { libraryTarget: "commonjs2", path: path.join(__dirname, "../dist/nativescript"), diff --git a/webpack/webpack.node.js b/webpack/webpack.node.js index f1178b9a..925ade79 100755 --- a/webpack/webpack.node.js +++ b/webpack/webpack.node.js @@ -1,12 +1,12 @@ 'use strict'; const path = require('path'); -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); var nodeExternals = require('webpack-node-externals'); const commonConfig = require('./webpack.common.js'); module.exports = function(options) { - return webpackMerge(commonConfig(), { + return merge(commonConfig(), { output: { libraryTarget: "commonjs2", path: path.join(__dirname, "../dist/node"), diff --git a/webpack/webpack.react-native.js b/webpack/webpack.react-native.js index de9f3fd3..7f347926 100755 --- a/webpack/webpack.react-native.js +++ b/webpack/webpack.react-native.js @@ -1,14 +1,14 @@ 'use strict'; const path = require('path'); -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); const TerserPlugin = require("terser-webpack-plugin"); var nodeExternals = require('webpack-node-externals'); const commonConfig = require('./webpack.common.js'); module.exports = function(options) { - return webpackMerge(commonConfig(), { + return merge(commonConfig(), { output: { libraryTarget: "commonjs2", path: path.join(__dirname, "../dist/react-native"), diff --git a/webpack/webpack.web.js b/webpack/webpack.web.js index 23628b50..7d657ea6 100755 --- a/webpack/webpack.web.js +++ b/webpack/webpack.web.js @@ -1,13 +1,13 @@ 'use strict'; const path = require('path'); -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); const commonConfig = require('./webpack.common.js'); const webpack = require('webpack'); module.exports = function(options) { - return webpackMerge(commonConfig(), { + return merge(commonConfig(), { output: { library: "Contentstack", libraryTarget: "umd", From 74796eaf8208380c5269fb3ffc0518b17e4f5481 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:10:39 +0530 Subject: [PATCH 13/76] sca-scan.yml From f1674da989f891dc1e03394854e23f5e7093ae18 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:10:51 +0530 Subject: [PATCH 14/76] jira.yml --- .github/workflows/jira.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index caa4bbdf..250abc76 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -21,7 +21,7 @@ jobs: project: ${{ secrets.JIRA_PROJECT }} issuetype: ${{ secrets.JIRA_ISSUE_TYPE }} summary: | - ${{ github.event.pull_request.title }} + Snyk | Vulnerability | ${{ github.event.repository.name }} | ${{ github.event.pull_request.title }} description: | PR: ${{ github.event.pull_request.html_url }} From f591bc2ac070f38778be6b866f094c8aa957852d Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:10:52 +0530 Subject: [PATCH 15/76] sast-scan.yml From 64ce6f689cd6ff0a99c23b4eeee6fba62b49d01b Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:10:54 +0530 Subject: [PATCH 16/76] codeql-analysis.yml From 33bd86a08f3ed86423c015833ef48388fd5a5c7c Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Mon, 20 Jan 2025 12:10:58 +0530 Subject: [PATCH 17/76] Updated codeowners --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 07739234..1be7e0dc 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -* @contentstack/security-admin \ No newline at end of file +* @contentstack/security-admin From bf9df984c1a83565f58e15960485b4c5a40c232f Mon Sep 17 00:00:00 2001 From: raj pandey Date: Mon, 20 Jan 2025 14:02:40 +0530 Subject: [PATCH 18/76] version fixed --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4fc6a97a..17187974 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.23.2", + "version": "3.23.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.23.2", + "version": "3.23.1", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", diff --git a/package.json b/package.json index 0d451a8a..4b3287e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.23.2", + "version": "3.23.1", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { From e1424ffa9a443b9ba804d518cc4ef8b055156ddd Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 21 Jan 2025 13:30:48 +0530 Subject: [PATCH 19/76] sanity update for dev11 --- sanity-report-dev11.js | 91 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 sanity-report-dev11.js diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js new file mode 100644 index 00000000..a178d498 --- /dev/null +++ b/sanity-report-dev11.js @@ -0,0 +1,91 @@ +const fs = require("fs"); +const dotenv = require("dotenv"); +const cheerio = require("cheerio"); + +dotenv.config(); + +const user1 = process.env.USER1; +const user2 = process.env.USER2; +const user3 = process.env.USER3; +const user4 = process.env.USER4; + +const tapHtmlContent = fs.readFileSync("./tap-html.html", "utf8"); +const $ = cheerio.load(tapHtmlContent); + +const totalCount = $(".nav a:nth-child(2)") + .text() + .trim() + .replace("Total Count", ""); +const totalPass = $(".nav a:nth-child(3)") + .text() + .trim() + .replace("Total Pass", ""); +const totalFail = $(".nav a:nth-child(4)") + .text() + .trim() + .replace("Total Fail", ""); + +const totalTime = $(".nav a:nth-child(1)") + .text() + .trim() + .replace("Total Time", ""); + +const milliseconds = parseInt(totalTime.replace(/\D/g, ''), 10); +const totalSeconds = Math.floor(milliseconds / 1000); +const durationInMinutes = Math.floor(totalSeconds / 60); +const durationInSeconds = totalSeconds % 60; + +const passedTests = parseInt(totalPass, 10); +const totalTests = parseInt(totalCount, 10); + +const resultMessage = + passedTests === totalTests + ? `:white_check_mark: Success (${passedTests} / ${totalTests} Passed)` + : `:x: Failure (${passedTests} / ${totalTests} Passed)`; + +const pipelineName = process.env.GO_PIPELINE_NAME; +const pipelineCounter = process.env.GO_PIPELINE_COUNTER; +const goCdServer = process.env.GOCD_SERVER; + +const reportUrl = `http://${goCdServer}/go/files/${pipelineName}/${pipelineCounter}/sanity/1/sanity/test-results/tap-html.html`; + +let tagUsers = ``; +if (totalFail > 0) { + tagUsers = `<@${user1}> <@${user2}> <@${user3}> <@${user4}>`; +} + +const slackMessage = { + text: `Dev11, CDA SDK Full Sanity +*Result:* ${resultMessage}. ${durationInMinutes}m ${durationInSeconds}s +*Failed Tests:* ${totalFail} +<${reportUrl}|View Report> +${tagUsers}`, +}; + +const slackWebhookUrl = process.env.SLACK_WEBHOOK_URL; + +const sendSlackMessage = async (message) => { + const payload = { + text: message, + }; + + try { + const response = await fetch(slackWebhookUrl, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error(`Error sending message to Slack: ${response.statusText}`); + } + + console.log("Message sent to Slack successfully"); + } catch (error) { + console.error("Error:", error); + } +}; + +sendSlackMessage(slackMessage.text); \ No newline at end of file From 3d293483cd64a1e988ef03dfe2e5047e1d1999ad Mon Sep 17 00:00:00 2001 From: Vikram Kalta Date: Wed, 22 Jan 2025 22:41:19 +0000 Subject: [PATCH 20/76] fix: added npm token to github release pipeline --- .github/workflows/npm-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 88017fe3..bd037be8 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -31,4 +31,4 @@ jobs: - run: npm ci - run: npm publish env: - NODE_AUTH_TOKEN: ${{ secrets.PAT_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 7ba4d696bc494c4c9a3f6fb1c80289cfb36e1566 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Fri, 24 Jan 2025 21:00:36 +0530 Subject: [PATCH 21/76] =?UTF-8?q?Refactor=20getCacheCallback=20to=20direct?= =?UTF-8?q?ly=20use=20parent=20promise's=20resolve=20an=E2=80=A6=20(#271)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Refactor getCacheCallback to directly use parent promise's resolve and reject, simplifying error handling and avoiding nested promises. * Updated utils.js file * Fixed empty object error when API throw error --- CHANGELOG.md | 11 +++++++++++ package-lock.json | 4 ++-- package.json | 2 +- src/core/lib/utils.js | 35 +++++++++++++++++++---------------- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59d6b00b..16ba84ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ ## Change log +### Version: 3.24.1 +#### Date: January-27-2025 +##### Fix: + - Added HTTP error codes in the findOne method + +### Version: 3.24.0 +#### Date: January-27-2025 +##### Enhancement: + - updateasseturl for handling jrte within blocks + - version bumps + - Fixed testcases ### Version: 3.23.0 #### Date: December-05-2024 diff --git a/package-lock.json b/package-lock.json index 4c44965e..41ae4da3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.1", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", diff --git a/package.json b/package.json index 94e20ac5..686bcf7f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.1", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { diff --git a/src/core/lib/utils.js b/src/core/lib/utils.js index 121fb413..05af3cd1 100755 --- a/src/core/lib/utils.js +++ b/src/core/lib/utils.js @@ -252,19 +252,20 @@ export function sendRequest(queryObject, options) { } } - let getCacheCallback = function() { + let getCacheCallback = function(resolve, reject) { return function(err, entries) { - return new Promise(function(resolve, reject) { - try { - if (err) reject(err); - if (!tojson) entries = resultWrapper(entries); - resolve(spreadResult(entries)); - } catch (e) { - reject(e) + try { + if (err) { + return reject(err); // Propagate the error to the parent promise } - }); - } - } + if (!tojson) entries = resultWrapper(entries); + resolve(spreadResult(entries)); // Propagate the result to the parent promise + } catch (e) { + reject(e); // Handle any synchronous errors + } + }; + }; + let callback = function(continueFlag, resolve, reject) { if (continueFlag) { @@ -291,7 +292,7 @@ export function sendRequest(queryObject, options) { if (err || !_data || (_data.entries.length === 0 && _data.assets.length === 0)) { return reject({ error_code: 141, error_message: 'The requested entry doesn\'t exist.' }); } - getCacheCallback()(err, _data); + getCacheCallback(resolve, reject)(err, _data); }); return } else { @@ -338,12 +339,14 @@ export function sendRequest(queryObject, options) { } }.bind(self)) .catch(function(error) { - if (cachePolicy === 2 && self.provider !== null) { - self.provider.get(hashQuery, getCacheCallback()); - } else { - return reject(error); + if(error){ + reject(error); } + else if (cachePolicy === 2 && self.provider !== null) { + self.provider.get(hashQuery, getCacheCallback(resolve, reject)); + } }); + } } switch (cachePolicy) { From e7d495595fea83b890a34075b53f8c277689b237 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 29 Jan 2025 13:49:06 +0530 Subject: [PATCH 22/76] removed cheerio package as it had high vulnerability in latest update --- package-lock.json | 1142 +++++++++++++++++++++++++++------------------ package.json | 3 +- sanity-report.js | 8 +- 3 files changed, 702 insertions(+), 451 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41ae4da3..d0fe5560 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", - "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", @@ -31,7 +30,9 @@ "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", + "jquery": "^3.7.1", "jsdoc": "^4.0.4", + "jsdom": "^26.0.0", "jshint": "^2.13.6", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", @@ -68,6 +69,27 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz", + "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -94,22 +116,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", + "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", + "@babel/helpers": "^7.26.7", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/traverse": "^7.26.7", + "@babel/types": "^7.26.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -393,27 +415,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", + "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", - "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", + "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.5" + "@babel/types": "^7.26.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -1546,13 +1568,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1629,15 +1651,15 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", + "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/compat-data": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", @@ -1651,7 +1673,7 @@ "@babel/plugin-transform-arrow-functions": "^7.25.9", "@babel/plugin-transform-async-generator-functions": "^7.25.9", "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", @@ -1662,7 +1684,7 @@ "@babel/plugin-transform-duplicate-keys": "^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-for-of": "^7.25.9", "@babel/plugin-transform-function-name": "^7.25.9", @@ -1671,12 +1693,12 @@ "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", @@ -1693,7 +1715,7 @@ "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", @@ -1728,9 +1750,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", + "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1756,17 +1778,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", - "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", + "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.5", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/types": "^7.26.5", + "@babel/types": "^7.26.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1775,9 +1797,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", - "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", + "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", "dev": true, "license": "MIT", "dependencies": { @@ -1796,11 +1818,126 @@ "license": "MIT" }, "node_modules/@contentstack/utils": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.15.tgz", - "integrity": "sha512-m/FNx8LwSquMWo+KQ+zyBALEQTeFuldpLkqTrWXPEtmkPMCNnrF3aLcYHmcpLs7B1nux3wPRD6njhMDUU57giQ==", + "version": "1.3.16", + "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.16.tgz", + "integrity": "sha512-HfVEwh7Da8xV4iZth/ci5bcOqszTx/U2mOzsWbyjHLeOfiU9U7uj6DefrrAPhNhL7JgCq/EpRd3vFtaxiEHBlA==", "license": "MIT" }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", + "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", + "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", @@ -2560,12 +2697,13 @@ "license": "MIT" }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", - "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", + "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", "dev": true, "license": "MIT", "dependencies": { + "@types/ms": "*", "@types/node": "*" } }, @@ -2601,10 +2739,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { - "version": "22.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", - "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "version": "22.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", + "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "dev": true, "license": "MIT", "dependencies": { @@ -2626,9 +2771,9 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", + "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", "dev": true, "license": "MIT", "dependencies": { @@ -3121,6 +3266,16 @@ "dev": true, "license": "MIT" }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3398,19 +3553,6 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", - "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/body-parser/node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3481,12 +3623,6 @@ "node": ">= 0.6" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3660,9 +3796,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001692", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", - "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", + "version": "1.0.30001696", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", + "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", "dev": true, "funding": [ { @@ -3730,48 +3866,6 @@ "node": "*" } }, - "node_modules/cheerio": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", - "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "encoding-sniffer": "^0.2.0", - "htmlparser2": "^9.1.0", - "parse5": "^7.1.2", - "parse5-htmlparser2-tree-adapter": "^7.0.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^6.19.5", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=18.17" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -4172,32 +4266,32 @@ "node": "*" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "license": "BSD-2-Clause", + "node_modules/cssstyle": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", + "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", + "dev": true, + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "@asamuzakjp/css-color": "^2.8.2", + "rrweb-cssom": "^0.8.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=18" } }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=18" } }, "node_modules/data-view-buffer": { @@ -4278,6 +4372,13 @@ } } }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "dev": true, + "license": "MIT" + }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -4471,23 +4572,21 @@ } }, "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" } }, - "node_modules/domelementtype": { + "node_modules/dom-serializer/node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, "funding": [ { "type": "github", @@ -4496,33 +4595,40 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", + "dev": true, + "dependencies": { + "domelementtype": "1" } }, "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "dom-serializer": "0", + "domelementtype": "1" } }, "node_modules/dotenv": { @@ -4606,9 +4712,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.83", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", - "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", + "version": "1.5.88", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.88.tgz", + "integrity": "sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==", "dev": true, "license": "ISC" }, @@ -4652,19 +4758,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding-sniffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", - "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, "node_modules/enhanced-resolve": { "version": "5.18.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", @@ -4680,16 +4773,11 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", + "dev": true, + "license": "BSD-like" }, "node_modules/envinfo": { "version": "7.14.0", @@ -5196,9 +5284,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", - "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, "funding": [ { @@ -5233,9 +5321,9 @@ } }, "node_modules/fetch-mock": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.0.tgz", - "integrity": "sha512-XjgxM582kB0SzPOqH2UdGTwSqga8A8aBPjxcYr0wTeOlCWpZoK6zBrPzltECUTu6Zt3VTWafmKF599LN9BRN5Q==", + "version": "12.2.1", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.1.tgz", + "integrity": "sha512-ZUEDYDCr/qeZ3paYVyt6VkmuV/3HhZFVsih1Mt8hAAT34Gsc6HUv2qaFd5nh82BMhOaFjYL2yZbYi5VMuIhXKw==", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", @@ -5315,14 +5403,43 @@ "dev": true, "license": "MIT" }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/fetch-mock-jest/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "minimatch": "^5.0.1" + "punycode": "^2.1.0" + } + }, + "node_modules/fetch-mock-jest/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/fetch-mock-jest/node_modules/whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { @@ -5470,13 +5587,19 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", + "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/form-data": { @@ -5559,6 +5682,21 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5907,6 +6045,19 @@ "dev": true, "license": "MIT" }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -5915,22 +6066,17 @@ "license": "MIT" }, "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" } }, "node_modules/http-errors": { @@ -5964,6 +6110,20 @@ "node": ">= 14" } }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -5975,12 +6135,13 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" @@ -6126,12 +6287,13 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", - "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { + "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", @@ -6415,6 +6577,13 @@ "node": ">=0.10.0" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -6609,9 +6778,9 @@ } }, "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true, "license": "MIT" }, @@ -7684,6 +7853,13 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "dev": true, + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7759,6 +7935,47 @@ "node": ">=12.0.0" } }, + "node_modules/jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -7791,94 +8008,6 @@ "jshint": "bin/jshint" } }, - "node_modules/jshint/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/jshint/node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/jshint/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/jshint/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/jshint/node_modules/domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/jshint/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/jshint/node_modules/entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", - "dev": true, - "license": "BSD-like" - }, - "node_modules/jshint/node_modules/htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - } - }, - "node_modules/jshint/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "license": "MIT" - }, "node_modules/jshint/node_modules/minimatch": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", @@ -7892,26 +8021,6 @@ "node": "*" } }, - "node_modules/jshint/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/jshint/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/jshint/node_modules/strip-json-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", @@ -8210,6 +8319,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "dev": true, "license": "MIT" }, @@ -8354,6 +8464,19 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", @@ -8545,6 +8668,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mock-property/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8671,9 +8801,9 @@ } }, "node_modules/nodemailer": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.16.tgz", - "integrity": "sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.0.tgz", + "integrity": "sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==", "dev": true, "license": "MIT-0", "engines": { @@ -8703,17 +8833,12 @@ "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } + "node_modules/nwsapi": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", @@ -9009,6 +9134,7 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, "license": "MIT", "dependencies": { "entities": "^4.5.0" @@ -9017,29 +9143,17 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" }, "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/parseurl": { @@ -9497,6 +9611,19 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -9505,18 +9632,16 @@ "license": "MIT" }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, "node_modules/recast": { @@ -9840,6 +9965,13 @@ "node": ">= 0.10" } }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -9860,6 +9992,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9898,6 +10037,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -9939,8 +10085,22 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/schema-utils": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", @@ -10362,14 +10522,11 @@ "license": "MIT" }, "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } + "license": "MIT" }, "node_modules/string-length": { "version": "4.0.2", @@ -10598,6 +10755,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, "node_modules/tap-html": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tap-html/-/tap-html-1.1.0.tgz", @@ -10630,13 +10794,6 @@ "tap-json": "bin/tap-json" } }, - "node_modules/tap-json/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "license": "MIT" - }, "node_modules/tap-json/node_modules/object-keys": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", @@ -10644,26 +10801,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tap-json/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/tap-json/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/tap-json/node_modules/tap-parser": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz", @@ -10930,6 +11067,51 @@ "readable-stream": "3" } }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/tldts": { + "version": "6.1.75", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.75.tgz", + "integrity": "sha512-+lFzEXhpl7JXgWYaXcB6DqTYXbUArvrWAE/5ioq/X3CdWLbDjpPP4XTrQBmEJ91y3xbe4Fkw7Lxv4P3GWeJaNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.75" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.75", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.75.tgz", + "integrity": "sha512-AOvV5YYIAFFBfransBzSTyztkc3IMfz5Eq3YluaRiEu55nn43Fzaufx70UqEKYr8BoLCach4q8g/bg6e5+/aFw==", + "dev": true, + "license": "MIT" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -10960,14 +11142,30 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", + "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" } }, "node_modules/ts-jest": { @@ -11225,15 +11423,6 @@ "dev": true, "license": "MIT" }, - "node_modules/undici": { - "version": "6.21.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", - "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -11388,6 +11577,19 @@ "node": ">= 0.8" } }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -11413,11 +11615,14 @@ } }, "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } }, "node_modules/webpack": { "version": "5.97.1", @@ -11657,6 +11862,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" @@ -11665,25 +11871,41 @@ "node": ">=18" } }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", "dev": true, "license": "MIT", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/which": { @@ -11769,6 +11991,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -11877,6 +12106,23 @@ } } }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", diff --git a/package.json b/package.json index 686bcf7f..2c9132e0 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,9 @@ "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", + "jsdom": "^26.0.0", "jshint": "^2.13.6", + "jquery": "^3.7.1", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", "nodemailer": "^6.9.16", @@ -100,7 +102,6 @@ }, "dependencies": { "@contentstack/utils": "^1.3.15", - "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", diff --git a/sanity-report.js b/sanity-report.js index dd962f11..61786f7a 100644 --- a/sanity-report.js +++ b/sanity-report.js @@ -3,10 +3,14 @@ const { App } = require('@slack/bolt'); const dotenv = require('dotenv') dotenv.config() -const cheerio = require('cheerio'); +// const cheerio = require('cheerio'); const tapHtmlContent = fs.readFileSync('./tap-html.html', 'utf8'); const report = `./tap-html.html` -const $ = cheerio.load(tapHtmlContent); +// const $ = cheerio.load(tapHtmlContent); +// const tapHtmlContent = fs.readFileSync("./tap-html.html", "utf8"); +const { JSDOM } = require("jsdom"); +const dom = new JSDOM(tapHtmlContent); +const $ = require("jquery")(dom.window); const totalTime = $('.nav a:nth-child(1)').text().trim().replace('Total Time', ''); const totalCount = $('.nav a:nth-child(2)').text().trim().replace('Total Count', ''); From 9432cba853380d32b9b391cd7d4ceb97350690e0 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 29 Jan 2025 14:00:25 +0530 Subject: [PATCH 23/76] update sanity reports files --- sanity-report-dev11.js | 5 +++-- sanity-report.js | 5 +---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index a178d498..7c124c83 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -1,6 +1,6 @@ const fs = require("fs"); +const { JSDOM } = require("jsdom"); const dotenv = require("dotenv"); -const cheerio = require("cheerio"); dotenv.config(); @@ -10,7 +10,8 @@ const user3 = process.env.USER3; const user4 = process.env.USER4; const tapHtmlContent = fs.readFileSync("./tap-html.html", "utf8"); -const $ = cheerio.load(tapHtmlContent); +const dom = new JSDOM(tapHtmlContent); +const $ = require("jquery")(dom.window); const totalCount = $(".nav a:nth-child(2)") .text() diff --git a/sanity-report.js b/sanity-report.js index 61786f7a..38810001 100644 --- a/sanity-report.js +++ b/sanity-report.js @@ -1,14 +1,11 @@ const fs = require('fs'); const { App } = require('@slack/bolt'); +const { JSDOM } = require("jsdom"); const dotenv = require('dotenv') dotenv.config() -// const cheerio = require('cheerio'); const tapHtmlContent = fs.readFileSync('./tap-html.html', 'utf8'); const report = `./tap-html.html` -// const $ = cheerio.load(tapHtmlContent); -// const tapHtmlContent = fs.readFileSync("./tap-html.html", "utf8"); -const { JSDOM } = require("jsdom"); const dom = new JSDOM(tapHtmlContent); const $ = require("jquery")(dom.window); From 50cfdaffb4a977cfd577c17c7c06ae2d9e35bdfd Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 29 Jan 2025 15:43:48 +0530 Subject: [PATCH 24/76] version bump to 3.24.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d0fe5560..79747a65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.24.1", + "version": "3.24.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.24.1", + "version": "3.24.2", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", diff --git a/package.json b/package.json index 2c9132e0..86fe9847 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.24.1", + "version": "3.24.2", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { From f089dd0dbf3a384bd5fccef30e2bfa917add85e8 Mon Sep 17 00:00:00 2001 From: cs-raj <122264749+cs-raj@users.noreply.github.com> Date: Thu, 30 Jan 2025 12:44:55 +0530 Subject: [PATCH 25/76] DX | 27-01-2025 | Release (#269) * fix: added fix for updateasseturl for handling jrte within blocks * dropping isomorphic-fetch and node-fetch * version bumpt to 3.23.1 * removed commented lines * Updated error codes in testcases * fix: disable minification for improved debugging * fix: setting minimize to true for browser * verison bump * license update * Updated slack bolt and qs * version fixed * sanity update for dev11 --------- Co-authored-by: Vikram Kalta Co-authored-by: Vikram Kalta <65945391+vkalta@users.noreply.github.com> Co-authored-by: harshitha.d Co-authored-by: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Co-authored-by: harshithad0703 <104908717+harshithad0703@users.noreply.github.com> --- LICENSE.txt | 2 +- package-lock.json | 2913 +++++++++++++++---------------- package.json | 39 +- sanity-report-dev11.js | 91 + sanity-report.js | 4 +- src/core/contentstack.js | 14 +- src/runtime/node/http.js | 3 +- src/runtime/web/http.js | 3 +- test/entry/findone.js | 38 +- webpack/webpack.common.js | 5 +- webpack/webpack.nativescript.js | 9 +- webpack/webpack.node.js | 7 +- webpack/webpack.react-native.js | 21 +- webpack/webpack.web.js | 9 +- 14 files changed, 1592 insertions(+), 1566 deletions(-) create mode 100644 sanity-report-dev11.js diff --git a/LICENSE.txt b/LICENSE.txt index eebdf5a6..17d428ad 100755 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,7 +1,7 @@ The MIT License (MIT) -Copyright (c) 2016-2024 Contentstack +Copyright (c) 2016-2025 Contentstack Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/package-lock.json b/package-lock.json index 96fa0353..4c44965e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,54 +1,53 @@ { "name": "contentstack", - "version": "3.23.0", + "version": "3.24.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.23.0", + "version": "3.24.0", "license": "MIT", "dependencies": { - "@contentstack/utils": "^1.3.12", + "@contentstack/utils": "^1.3.15", "cheerio": "^1.0.0", "es6-promise": "^4.2.8", - "fetch-mock": "^11.1.5", - "isomorphic-fetch": "^3.0.0", + "fetch-mock": "^12.2.0", "localStorage": "1.0.4", - "qs": "^6.13.0" + "qs": "^6.14.0" }, "devDependencies": { - "@babel/core": "^7.25.9", - "@babel/preset-env": "^7.25.9", - "@babel/runtime": "^7.25.9", - "@slack/bolt": "^3.22.0", + "@babel/core": "^7.26.0", + "@babel/preset-env": "^7.26.0", + "@babel/runtime": "^7.26.0", + "@slack/bolt": "^4.2.0", "@types/jest": "^26.0.24", "babel-loader": "^9.2.1", "clean-webpack-plugin": "^4.0.0", - "compression-webpack-plugin": "^10.0.0", - "dotenv": "^16.4.5", + "compression-webpack-plugin": "^11.1.0", + "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", "fetch-mock-jest": "^1.5.1", - "http-proxy-agent": "^3.0.0", + "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", - "jest-html-reporters": "^2.1.7", + "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", "jshint": "^2.13.6", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", - "nodemailer": "^6.9.15", + "nodemailer": "^6.9.16", "string-replace-loader": "^3.1.0", "tap-html": "^1.1.0", "tap-json": "1.0.0", "tape": "4.17.0", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "ts-jest": "^29.2.5", "typescript": "^4.9.5", - "uglify-js": "2.8.29", - "webpack": "^5.95.0", - "webpack-cli": "^4.10.0", - "webpack-md5-hash": "0.0.5", - "webpack-merge": "4.1.5", + "uglify-js": "3.19.3", + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1", + "webpack-md5-hash": "0.0.6", + "webpack-merge": "6.0.1", "webpack-node-externals": "^3.0.0" }, "engines": { @@ -85,9 +84,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", "dev": true, "license": "MIT", "engines": { @@ -126,14 +125,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -155,28 +154,14 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -209,14 +194,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", - "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -303,9 +288,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, "license": "MIT", "engines": { @@ -331,15 +316,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -348,20 +333,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", @@ -436,13 +407,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -873,13 +844,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1059,13 +1030,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { @@ -1208,15 +1178,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1295,13 +1264,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1787,17 +1756,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.5", "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", + "@babel/types": "^7.26.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1806,9 +1775,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", "dev": true, "license": "MIT", "dependencies": { @@ -1827,19 +1796,19 @@ "license": "MIT" }, "node_modules/@contentstack/utils": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.13.tgz", - "integrity": "sha512-Lp4UIHMdSxMjCmcK93L987Kxa/wnucRlR7CjVBMd1bD8auJSPFh7E3aP9fnvzjzSWockBRYbXkOq6KLojgXlPA==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.15.tgz", + "integrity": "sha512-m/FNx8LwSquMWo+KQ+zyBALEQTeFuldpLkqTrWXPEtmkPMCNnrF3aLcYHmcpLs7B1nux3wPRD6njhMDUU57giQ==", "license": "MIT" }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.17.0" } }, "node_modules/@istanbuljs/load-nyc-config": { @@ -2197,9 +2166,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "license": "MIT", "dependencies": { @@ -2261,9 +2230,9 @@ } }, "node_modules/@jsdoc/salty": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz", - "integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz", + "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2334,30 +2303,26 @@ } }, "node_modules/@slack/bolt": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-3.22.0.tgz", - "integrity": "sha512-iKDqGPEJDnrVwxSVlFW6OKTkijd7s4qLBeSufoBsTM0reTyfdp/5izIQVkxNfzjHi3o6qjdYbRXkYad5HBsBog==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-4.2.0.tgz", + "integrity": "sha512-KQGUkC37t6DUR+FVglHmcUrMpdCLbY9wpZXfjW6CUNmQnINits+EeOrVN/5xPcISKJcBIhqgrarLpwU9tpESTw==", "dev": true, "license": "MIT", "dependencies": { "@slack/logger": "^4.0.0", - "@slack/oauth": "^2.6.3", - "@slack/socket-mode": "^1.3.6", + "@slack/oauth": "^3.0.2", + "@slack/socket-mode": "^2.0.3", "@slack/types": "^2.13.0", - "@slack/web-api": "^6.13.0", - "@types/express": "^4.16.1", - "@types/promise.allsettled": "^1.0.3", - "@types/tsscmp": "^1.0.0", - "axios": "^1.7.4", - "express": "^4.21.0", + "@slack/web-api": "^7.8.0", + "axios": "^1.7.8", + "express": "^5.0.0", "path-to-regexp": "^8.1.0", - "promise.allsettled": "^1.0.2", - "raw-body": "^2.3.3", + "raw-body": "^3", "tsscmp": "^1.0.6" }, "engines": { - "node": ">=14.21.3", - "npm": ">=6.14.18" + "node": ">=18", + "npm": ">=8.6.0" } }, "node_modules/@slack/logger": { @@ -2375,70 +2340,41 @@ } }, "node_modules/@slack/oauth": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-2.6.3.tgz", - "integrity": "sha512-1amXs6xRkJpoH6zSgjVPgGEJXCibKNff9WNDijcejIuVy1HFAl1adh7lehaGNiHhTWfQkfKxBiF+BGn56kvoFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@slack/logger": "^3.0.0", - "@slack/web-api": "^6.12.1", - "@types/jsonwebtoken": "^8.3.7", - "@types/node": ">=12", - "jsonwebtoken": "^9.0.0", - "lodash.isstring": "^4.0.1" - }, - "engines": { - "node": ">=12.13.0", - "npm": ">=6.12.0" - } - }, - "node_modules/@slack/oauth/node_modules/@slack/logger": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", - "integrity": "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-3.0.2.tgz", + "integrity": "sha512-MdPS8AP9n3u/hBeqRFu+waArJLD/q+wOSZ48ktMTwxQLc6HJyaWPf8soqAyS/b0D6IlvI5TxAdyRyyv3wQ5IVw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": ">=12.0.0" + "@slack/logger": "^4", + "@slack/web-api": "^7.8.0", + "@types/jsonwebtoken": "^9", + "@types/node": ">=18", + "jsonwebtoken": "^9", + "lodash.isstring": "^4" }, "engines": { - "node": ">= 12.13.0", - "npm": ">= 6.12.0" + "node": ">=18", + "npm": ">=8.6.0" } }, "node_modules/@slack/socket-mode": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-1.3.6.tgz", - "integrity": "sha512-G+im7OP7jVqHhiNSdHgv2VVrnN5U7KY845/5EZimZkrD4ZmtV0P3BiWkgeJhPtdLuM7C7i6+M6h6Bh+S4OOalA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-2.0.3.tgz", + "integrity": "sha512-aY1AhQd3HAgxLYC2Mz47dXtW6asjyYp8bJ24MWalg+qFWPaXj8VBYi+5w3rfGqBW5IxlIhs3vJTEQtIBrqQf5A==", "dev": true, "license": "MIT", "dependencies": { - "@slack/logger": "^3.0.0", - "@slack/web-api": "^6.12.1", - "@types/node": ">=12.0.0", - "@types/ws": "^7.4.7", + "@slack/logger": "^4", + "@slack/web-api": "^7.8.0", + "@types/node": ">=18", + "@types/ws": "^8", "eventemitter3": "^5", - "finity": "^0.5.4", - "ws": "^7.5.3" + "ws": "^8" }, "engines": { - "node": ">=12.13.0", - "npm": ">=6.12.0" - } - }, - "node_modules/@slack/socket-mode/node_modules/@slack/logger": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", - "integrity": "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": ">=12.0.0" - }, - "engines": { - "node": ">= 12.13.0", - "npm": ">= 6.12.0" + "node": ">= 18", + "npm": ">= 8.6.0" } }, "node_modules/@slack/types": { @@ -2453,50 +2389,30 @@ } }, "node_modules/@slack/web-api": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-6.13.0.tgz", - "integrity": "sha512-dv65crIgdh9ZYHrevLU6XFHTQwTyDmNqEqzuIrV+Vqe/vgiG6w37oex5ePDU1RGm2IJ90H8iOvHFvzdEO/vB+g==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.8.0.tgz", + "integrity": "sha512-d4SdG+6UmGdzWw38a4sN3lF/nTEzsDxhzU13wm10ejOpPehtmRoqBKnPztQUfFiWbNvSb4czkWYJD4kt+5+Fuw==", "dev": true, "license": "MIT", "dependencies": { - "@slack/logger": "^3.0.0", - "@slack/types": "^2.11.0", - "@types/is-stream": "^1.1.0", - "@types/node": ">=12.0.0", - "axios": "^1.7.4", - "eventemitter3": "^3.1.0", - "form-data": "^2.5.0", + "@slack/logger": "^4.0.0", + "@slack/types": "^2.9.0", + "@types/node": ">=18.0.0", + "@types/retry": "0.12.0", + "axios": "^1.7.8", + "eventemitter3": "^5.0.1", + "form-data": "^4.0.0", "is-electron": "2.2.2", - "is-stream": "^1.1.0", - "p-queue": "^6.6.1", - "p-retry": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0", - "npm": ">= 6.12.0" - } - }, - "node_modules/@slack/web-api/node_modules/@slack/logger": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", - "integrity": "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": ">=12.0.0" + "is-stream": "^2", + "p-queue": "^6", + "p-retry": "^4", + "retry": "^0.13.1" }, "engines": { - "node": ">= 12.13.0", - "npm": ">= 6.12.0" + "node": ">= 18", + "npm": ">= 8.6.0" } }, - "node_modules/@slack/web-api/node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -2542,27 +2458,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -2592,32 +2487,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -2645,23 +2514,6 @@ "@types/node": "*" } }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -2708,9 +2560,9 @@ "license": "MIT" }, "node_modules/@types/jsonwebtoken": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", - "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", + "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", "dev": true, "license": "MIT", "dependencies": { @@ -2742,13 +2594,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -2757,36 +2602,15 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, - "node_modules/@types/promise.allsettled": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/promise.allsettled/-/promise.allsettled-1.0.6.tgz", - "integrity": "sha512-wA0UT0HeT2fGHzIFV9kWpYz5mdoyLxKrTgMdZQM++5h6pYAFH73HXcQhefg24nD1yivUFEn5KU+EF4b+CXJ4Wg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.9.17", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", - "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -2794,29 +2618,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -2824,17 +2625,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/tsscmp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/tsscmp/-/tsscmp-1.0.2.tgz", - "integrity": "sha512-cy7BRSU8GYYgxjcx0Py+8lo5MthuDhlyu076KUcYzVNXL23luYgRHkMG2fIFEc6neckeh/ntP82mw+U4QjZq+g==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", "dev": true, "license": "MIT", "dependencies": { @@ -3020,37 +2814,45 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "dev": true, "license": "MIT", - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -3073,14 +2875,14 @@ "license": "Apache-2.0" }, "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { "node": ">= 0.6" @@ -3100,13 +2902,13 @@ } }, "node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -3157,21 +2959,6 @@ "ajv": "^8.8.2" } }, - "node_modules/align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -3249,14 +3036,14 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -3266,9 +3053,9 @@ } }, "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", "dev": true, "license": "MIT" }, @@ -3295,42 +3082,20 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.map": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.7.tgz", - "integrity": "sha512-XpcFfLoBEAhezrrNw1V+yLXkE7M6uR7xJEsxbG6c/V9v043qurwVJB9r9UTnoSioFDoz1i1VOydpWGmJpfVZbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-array-method-boxes-properly": "^1.0.0", - "es-object-atoms": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -3363,16 +3128,6 @@ "dev": true, "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -3390,9 +3145,9 @@ } }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dev": true, "license": "MIT", "dependencies": { @@ -3401,21 +3156,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -3627,34 +3367,31 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.2.tgz", + "integrity": "sha512-SNMk0OONlQ01uk8EPeiBvTW7W4ovpL5b1O3t1sjpPgfxOQ6BqQJ6XjxinDPR79Z6HdcD5zBBwr5ssiTlgdNztQ==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", + "debug": "3.1.0", "destroy": "1.2.0", "http-errors": "2.0.0", - "iconv-lite": "0.4.24", + "iconv-lite": "0.5.2", "on-finished": "2.4.1", "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "raw-body": "^3.0.0", + "type-is": "~1.6.18" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=18" } }, "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "license": "MIT", "dependencies": { @@ -3662,9 +3399,9 @@ } }, "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", "dev": true, "license": "MIT", "dependencies": { @@ -3674,15 +3411,78 @@ "node": ">=0.10.0" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/body-parser/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/body-parser/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" @@ -3712,9 +3512,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -3732,9 +3532,9 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { @@ -3792,16 +3592,45 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -3831,9 +3660,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001680", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", - "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "dev": true, "funding": [ { @@ -3864,20 +3693,6 @@ "node": ">= 10" } }, - "node_modules/center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4050,16 +3865,6 @@ "node": ">=6" } }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4201,17 +4006,17 @@ } }, "node_modules/compression-webpack-plugin": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz", - "integrity": "sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz", + "integrity": "sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==", "dev": true, "license": "MIT", "dependencies": { - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -4238,9 +4043,9 @@ } }, "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", "dev": true, "license": "MIT", "dependencies": { @@ -4278,16 +4083,19 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } }, "node_modules/core-js": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", - "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4297,13 +4105,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", - "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.2" + "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -4340,9 +4148,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -4393,15 +4201,15 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4411,31 +4219,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -4453,9 +4261,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -4470,16 +4278,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -4530,6 +4328,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -4713,9 +4512,9 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -4727,9 +4526,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -4752,6 +4551,20 @@ "ignored": "bin/ignored" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -4793,9 +4606,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.57", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.57.tgz", - "integrity": "sha512-xS65H/tqgOwUBa5UmOuNSLuslDo7zho0y/lgQw35pnrqiZh7UOWHCeL/Bt6noJATbA6tpQJGCifsFsIRZj1Fqg==", + "version": "1.5.83", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", + "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", "dev": true, "license": "ISC" }, @@ -4853,9 +4666,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4902,58 +4715,63 @@ } }, "node_modules/es-abstract": { - "version": "1.23.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.4.tgz", - "integrity": "sha512-HR1gxH5OaiN7XH7uiWH0RLw0RcFySiSoW1ctxmD1ahTw3uGBtkmm/ng0tDU1OtYx5OK6EOL5Y6O21cDflG3Jcg==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -4962,21 +4780,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "node_modules/es-abstract/node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, - "license": "MIT" - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4990,39 +4817,17 @@ "node": ">= 0.4" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -5032,30 +4837,31 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -5264,19 +5070,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -5304,71 +5097,89 @@ } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz", + "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "accepts": "^2.0.0", + "body-parser": "^2.0.1", + "content-disposition": "^1.0.0", "content-type": "~1.0.4", "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", + "cookie-signature": "^1.2.1", + "debug": "4.3.6", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", + "finalhandler": "^2.0.0", + "fresh": "2.0.0", "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", + "merge-descriptors": "^2.0.0", "methods": "~1.1.2", + "mime-types": "^3.0.0", "on-finished": "2.4.1", + "once": "1.4.0", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", + "router": "^2.0.0", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "^1.1.0", + "serve-static": "^2.1.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", - "type-is": "~1.6.18", + "type-is": "^2.0.0", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18" } }, "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, "license": "MIT" }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "node_modules/express/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -5385,10 +5196,20 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { @@ -5412,30 +5233,26 @@ } }, "node_modules/fetch-mock": { - "version": "11.1.5", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-11.1.5.tgz", - "integrity": "sha512-KHmZDnZ1ry0pCTrX4YG5DtThHi0MH+GNI9caESnzX/nMJBrvppUHMvLx47M0WY9oAtKOMiPfZDRpxhlHg89BOA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.0.tgz", + "integrity": "sha512-XjgxM582kB0SzPOqH2UdGTwSqga8A8aBPjxcYr0wTeOlCWpZoK6zBrPzltECUTu6Zt3VTWafmKF599LN9BRN5Q==", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", "dequal": "^2.0.3", "glob-to-regexp": "^0.4.1", - "is-subset": "^0.1.1", + "is-subset-of": "^3.1.10", "regexparam": "^3.0.0" }, "engines": { - "node": ">=8.0.0" - }, - "peerDependenciesMeta": { - "node-fetch": { - "optional": true - } + "node": ">=18.11.0" } }, "node_modules/fetch-mock-jest": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/fetch-mock-jest/-/fetch-mock-jest-1.5.1.tgz", "integrity": "sha512-+utwzP8C+Pax1GSka3nFXILWMY3Er2L+s090FOgqVNrNCPp0fDqgXnAHAJf12PLHi0z4PhcTaZNTz8e7K3fjqQ==", + "deprecated": "Use https://www.npmjs.com/package/@fetch-mock/jest instead. The underlying version of fetch-mock will also need upgrading: see https://www.wheresrhys.co.uk/fetch-mock/docs/Usage/upgrade-guide", "dev": true, "license": "MIT", "dependencies": { @@ -5498,35 +5315,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fetch-mock-jest/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/fetch-mock-jest/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/fetch-mock-jest/node_modules/whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -5574,14 +5362,14 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.0.0.tgz", + "integrity": "sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~2.0.0", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -5602,6 +5390,16 @@ "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5640,13 +5438,6 @@ "node": ">=8" } }, - "node_modules/finity": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/finity/-/finity-0.5.4.tgz", - "integrity": "sha512-3l+5/1tuw616Lgb0QBimxfdd2TqaDGpfCBpfX6EqtFmqUV3FtQnVEX4Aa62DagYEqnsTIjZcTfbq9msDbXYgyA==", - "dev": true, - "license": "MIT" - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -5689,19 +5480,41 @@ } }, "node_modules/form-data": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.2.tgz", - "integrity": "sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12", - "safe-buffer": "^5.2.1" + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/forwarded": { @@ -5715,29 +5528,28 @@ } }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/fs.realpath": { @@ -5747,21 +5559,6 @@ "dev": true, "license": "ISC" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5772,16 +5569,18 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -5821,16 +5620,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5849,6 +5653,19 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -5863,15 +5680,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -5963,12 +5780,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5992,11 +5809,14 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6015,6 +5835,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -6024,10 +5845,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -6036,9 +5861,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -6126,17 +5951,17 @@ } }, "node_modules/http-proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-3.0.0.tgz", - "integrity": "sha512-uGuJaBWQWDQCJI5ip0d/VTYZW0nRrlLWXA4A7P1jrsa+f77rW2yXz315oBt6zGCF6l8C2tlMxY7ffULCj+5FhA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "5", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -6224,28 +6049,28 @@ "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/ipaddr.js": { @@ -6259,14 +6084,14 @@ } }, "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6276,14 +6101,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -6299,28 +6125,50 @@ "dev": true, "license": "MIT" }, + "node_modules/is-async-function": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6350,9 +6198,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { @@ -6366,12 +6214,14 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -6382,13 +6232,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6420,6 +6271,22 @@ "dev": true, "license": "MIT" }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -6440,12 +6307,18 @@ "node": ">=6" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, "engines": { "node": ">= 0.4" }, @@ -6453,10 +6326,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-negative-zero": { + "node_modules/is-map": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", "engines": { @@ -6477,13 +6350,14 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6541,6 +6415,13 @@ "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -6572,13 +6453,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6588,23 +6469,27 @@ } }, "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6617,16 +6502,29 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", + "dev": true, "license": "MIT" }, + "node_modules/is-subset-of": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/is-subset-of/-/is-subset-of-3.1.10.tgz", + "integrity": "sha512-avvaYgVmYWyaZ1NDFiv4y9JGkrE2je3op1Po4VYKKJKR8H2qVPsg1GZuuXl5elCTxTlwAIsrAjWAs4BVrISFRw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "typedescriptor": "3.0.2" + } + }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6636,13 +6534,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -6651,14 +6549,47 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6701,16 +6632,6 @@ "node": ">=0.10.0" } }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -6795,30 +6716,6 @@ "node": ">=8" } }, - "node_modules/iterate-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", - "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/jake": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", @@ -7208,13 +7105,13 @@ } }, "node_modules/jest-html-reporters": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/jest-html-reporters/-/jest-html-reporters-2.1.7.tgz", - "integrity": "sha512-qYly47l7Q59bjVWpGQ9grSYaNIAtS1L+l8jQrC24iXWKRy3N/pkKTklGtcdqsZ8hhiGQPI9skByl/63GNj0UeQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/jest-html-reporters/-/jest-html-reporters-3.1.7.tgz", + "integrity": "sha512-GTmjqK6muQ0S0Mnksf9QkL9X9z2FGIpNSxC52E0PHDzjPQ1XDu2+XTI3B3FS43ZiUzD1f354/5FfwbNIBzT7ew==", "dev": true, "license": "MIT", "dependencies": { - "fs-extra": "^9.0.1", + "fs-extra": "^10.0.0", "open": "^8.0.3" } }, @@ -7863,9 +7760,9 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -8178,14 +8075,11 @@ } }, "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { "node": ">=0.10.0" } @@ -8210,16 +8104,6 @@ "node": ">=6" } }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -8378,16 +8262,6 @@ "dev": true, "license": "MIT" }, - "node_modules/longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -8493,6 +8367,15 @@ "node": ">= 12" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -8513,21 +8396,24 @@ "license": "MIT" }, "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -8563,23 +8449,10 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", + "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", "dev": true, "license": "MIT", "engines": { @@ -8587,13 +8460,13 @@ } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.0.tgz", + "integrity": "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.53.0" }, "engines": { "node": ">= 0.6" @@ -8754,9 +8627,9 @@ } }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { @@ -8770,26 +8643,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -8798,9 +8651,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, @@ -8912,15 +8765,17 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -8976,15 +8831,33 @@ "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/p-finally": { @@ -9470,27 +9343,6 @@ "dev": true, "license": "MIT" }, - "node_modules/promise.allsettled": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.7.tgz", - "integrity": "sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array.prototype.map": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "iterate-value": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -9584,12 +9436,12 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -9630,34 +9482,21 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", - "iconv-lite": "0.4.24", + "iconv-lite": "0.6.3", "unpipe": "1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -9721,16 +9560,39 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "license": "MIT", "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regenerate": { @@ -9771,15 +9633,17 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -9799,16 +9663,16 @@ } }, "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -9824,9 +9688,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz", - "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9836,14 +9700,17 @@ "regjsparser": "bin/parser" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=0.10" + "node": ">=6" } }, "node_modules/require-directory": { @@ -9877,19 +9744,22 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9918,9 +9788,9 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", "engines": { @@ -9937,19 +9807,6 @@ "node": ">= 4" } }, - "node_modules/right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "align-text": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -9964,16 +9821,36 @@ "rimraf": "bin.js" } }, + "node_modules/router": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.0.0.tgz", + "integrity": "sha512-dIM5zVoG8xhC6rnSN8uoAgFARwTE7BQs8YwHEvK0VCmfxQXMaOuA1uiR1IPwsW7JyK5iTt7Od/TC9StasS2NPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-flatten": "3.0.0", + "is-promise": "4.0.0", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "^8.0.0", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -10004,16 +9881,52 @@ ], "license": "MIT" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test/node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -10029,9 +9942,9 @@ "license": "MIT" }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, "license": "MIT", "dependencies": { @@ -10041,7 +9954,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -10059,55 +9972,60 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", + "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.3.5", + "destroy": "^1.2.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "http-errors": "^2.0.0", + "mime-types": "^2.1.35", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/send/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/send/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/send/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, "node_modules/serialize-javascript": { @@ -10121,25 +10039,26 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.1.0.tgz", + "integrity": "sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -10169,6 +10088,21 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -10189,16 +10123,6 @@ "node": ">=8" } }, - "node_modules/shallow-clone/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -10223,15 +10147,69 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -10376,19 +10354,6 @@ "node": ">= 0.8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/strict-event-emitter": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.1.0.tgz", @@ -10503,16 +10468,19 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10522,16 +10490,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10818,9 +10790,9 @@ } }, "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10837,17 +10809,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -10871,33 +10843,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -10913,32 +10858,6 @@ "node": ">= 10.13.0" } }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "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, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -11042,10 +10961,14 @@ } }, "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } }, "node_modules/ts-jest": { "version": "29.2.5", @@ -11143,46 +11066,47 @@ } }, "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.0.tgz", + "integrity": "sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -11192,18 +11116,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -11213,18 +11138,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -11233,6 +11158,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedescriptor": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/typedescriptor/-/typedescriptor-3.0.2.tgz", + "integrity": "sha512-hyVbaCUd18UiXk656g/imaBLMogpdijIEpnhWYrSda9rhvO4gOU16n2nh7xG5lv/rjumnZzGOdz0CEGTmFe0fQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT" + }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -11255,89 +11187,32 @@ "license": "MIT" }, "node_modules/uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, "license": "BSD-2-Clause", - "dependencies": { - "source-map": "~0.5.1", - "yargs": "~3.10.0" - }, "bin": { "uglifyjs": "bin/uglifyjs" }, "engines": { "node": ">=0.8.0" - }, - "optionalDependencies": { - "uglify-to-browserify": "~1.0.0" } }, - "node_modules/uglify-js/node_modules/camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-js/node_modules/cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", - "dev": true, - "license": "ISC", - "dependencies": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-js/node_modules/yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - }, - "node_modules/uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11351,18 +11226,18 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "license": "MIT", "engines": { "node": ">=18.17" } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, @@ -11431,9 +11306,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "funding": [ { @@ -11452,7 +11327,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -11538,23 +11413,24 @@ } }, "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", "dev": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.14.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", @@ -11591,45 +11467,40 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^12.1.0", "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "^5.82.0" }, "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -11639,34 +11510,19 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-cli/node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, "engines": { - "node": ">=10.0.0" + "node": ">=18" } }, "node_modules/webpack-md5-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/webpack-md5-hash/-/webpack-md5-hash-0.0.5.tgz", - "integrity": "sha512-D58vvw1wsOl+pBctRjHoInq4CBsVHIkyjF9nyUo1yGJunGtaxjkMLhHTPXwGwC/Xe8MR9rKLbdQvfnIt/hBu4w==", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/webpack-md5-hash/-/webpack-md5-hash-0.0.6.tgz", + "integrity": "sha512-HrQ0AJpeXHRa3IjsgyyEfTx8EqYs5y/4x/WklSYsNDcqBixHzCkrmJV5U+4ks+sx7ycKoIdqWLdyuk913FCS+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -11674,13 +11530,18 @@ } }, "node_modules/webpack-merge": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.5.tgz", - "integrity": "sha512-sVcM+MMJv6DO0C0GLLltx8mUlGMKXE0zBsuMqZ9jz2X9gsekALw6Rs0cAfTWc97VuWS6NpVUa78959zANnMMLQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.5" + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/webpack-node-externals": { @@ -11750,6 +11611,29 @@ "dev": true, "license": "MIT" }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -11781,12 +11665,6 @@ "node": ">=18" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT" - }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -11797,13 +11675,15 @@ } }, "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "node_modules/which": { @@ -11823,33 +11703,103 @@ } }, "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -11866,25 +11816,6 @@ "dev": true, "license": "MIT" }, - "node_modules/window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", - "dev": true, - "license": "MIT/X11", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -11925,17 +11856,17 @@ } }, "node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { diff --git a/package.json b/package.json index 5abbc7dc..94e20ac5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.23.0", + "version": "3.24.0", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { @@ -65,46 +65,45 @@ "tmp": "tmp/contentstack-3.15.0.tgz_1477830884275_0.9869455888401717" }, "devDependencies": { - "@babel/core": "^7.25.9", - "@babel/preset-env": "^7.25.9", - "@babel/runtime": "^7.25.9", - "@slack/bolt": "^3.22.0", + "@babel/core": "^7.26.0", + "@babel/preset-env": "^7.26.0", + "@babel/runtime": "^7.26.0", + "@slack/bolt": "^4.2.0", "@types/jest": "^26.0.24", "babel-loader": "^9.2.1", "clean-webpack-plugin": "^4.0.0", - "compression-webpack-plugin": "^10.0.0", - "dotenv": "^16.4.5", + "compression-webpack-plugin": "^11.1.0", + "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", "fetch-mock-jest": "^1.5.1", - "http-proxy-agent": "^3.0.0", + "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", - "jest-html-reporters": "^2.1.7", + "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", "jshint": "^2.13.6", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", - "nodemailer": "^6.9.15", + "nodemailer": "^6.9.16", "string-replace-loader": "^3.1.0", "tap-html": "^1.1.0", "tap-json": "1.0.0", "tape": "4.17.0", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "ts-jest": "^29.2.5", "typescript": "^4.9.5", - "uglify-js": "2.8.29", - "webpack": "^5.95.0", - "webpack-cli": "^4.10.0", - "webpack-md5-hash": "0.0.5", - "webpack-merge": "4.1.5", + "uglify-js": "3.19.3", + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1", + "webpack-md5-hash": "0.0.6", + "webpack-merge": "6.0.1", "webpack-node-externals": "^3.0.0" }, "dependencies": { - "@contentstack/utils": "^1.3.12", + "@contentstack/utils": "^1.3.15", "cheerio": "^1.0.0", "es6-promise": "^4.2.8", - "fetch-mock": "^11.1.5", - "isomorphic-fetch": "^3.0.0", + "fetch-mock": "^12.2.0", "localStorage": "1.0.4", - "qs": "^6.13.0" + "qs": "^6.14.0" } } diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js new file mode 100644 index 00000000..a178d498 --- /dev/null +++ b/sanity-report-dev11.js @@ -0,0 +1,91 @@ +const fs = require("fs"); +const dotenv = require("dotenv"); +const cheerio = require("cheerio"); + +dotenv.config(); + +const user1 = process.env.USER1; +const user2 = process.env.USER2; +const user3 = process.env.USER3; +const user4 = process.env.USER4; + +const tapHtmlContent = fs.readFileSync("./tap-html.html", "utf8"); +const $ = cheerio.load(tapHtmlContent); + +const totalCount = $(".nav a:nth-child(2)") + .text() + .trim() + .replace("Total Count", ""); +const totalPass = $(".nav a:nth-child(3)") + .text() + .trim() + .replace("Total Pass", ""); +const totalFail = $(".nav a:nth-child(4)") + .text() + .trim() + .replace("Total Fail", ""); + +const totalTime = $(".nav a:nth-child(1)") + .text() + .trim() + .replace("Total Time", ""); + +const milliseconds = parseInt(totalTime.replace(/\D/g, ''), 10); +const totalSeconds = Math.floor(milliseconds / 1000); +const durationInMinutes = Math.floor(totalSeconds / 60); +const durationInSeconds = totalSeconds % 60; + +const passedTests = parseInt(totalPass, 10); +const totalTests = parseInt(totalCount, 10); + +const resultMessage = + passedTests === totalTests + ? `:white_check_mark: Success (${passedTests} / ${totalTests} Passed)` + : `:x: Failure (${passedTests} / ${totalTests} Passed)`; + +const pipelineName = process.env.GO_PIPELINE_NAME; +const pipelineCounter = process.env.GO_PIPELINE_COUNTER; +const goCdServer = process.env.GOCD_SERVER; + +const reportUrl = `http://${goCdServer}/go/files/${pipelineName}/${pipelineCounter}/sanity/1/sanity/test-results/tap-html.html`; + +let tagUsers = ``; +if (totalFail > 0) { + tagUsers = `<@${user1}> <@${user2}> <@${user3}> <@${user4}>`; +} + +const slackMessage = { + text: `Dev11, CDA SDK Full Sanity +*Result:* ${resultMessage}. ${durationInMinutes}m ${durationInSeconds}s +*Failed Tests:* ${totalFail} +<${reportUrl}|View Report> +${tagUsers}`, +}; + +const slackWebhookUrl = process.env.SLACK_WEBHOOK_URL; + +const sendSlackMessage = async (message) => { + const payload = { + text: message, + }; + + try { + const response = await fetch(slackWebhookUrl, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error(`Error sending message to Slack: ${response.statusText}`); + } + + console.log("Message sent to Slack successfully"); + } catch (error) { + console.error("Error:", error); + } +}; + +sendSlackMessage(slackMessage.text); \ No newline at end of file diff --git a/sanity-report.js b/sanity-report.js index 6189bf9a..dd962f11 100644 --- a/sanity-report.js +++ b/sanity-report.js @@ -1,5 +1,5 @@ const fs = require('fs'); -const Slack = require('@slack/bolt') +const { App } = require('@slack/bolt'); const dotenv = require('dotenv') dotenv.config() @@ -39,7 +39,7 @@ const slackMessage = ` • Total Duration: *${durationInMinutes}m ${durationInSeconds}s* ` -const app = new Slack.App({ +const app = new App({ token: process.env.SLACK_BOT_TOKEN, signingSecret: process.env.SLACK_SIGNING_SECRET }) diff --git a/src/core/contentstack.js b/src/core/contentstack.js index abfd157a..20a06eff 100755 --- a/src/core/contentstack.js +++ b/src/core/contentstack.js @@ -63,7 +63,19 @@ class Contentstack { } } } - x(entry[key].children); + let _entry = {...entry}; + const keys = key.split("."); + for (const k of keys) { + if (_entry[k]) _entry = _entry[k]; + else if (_entry.length) { + for (const block of _entry) { + if (block[k]) { + _entry = block[k]; + } + } + } + } + if (_entry.children) x(_entry.children); if (correspondingAsset) { correspondingAsset['href'] = item.url; } diff --git a/src/runtime/node/http.js b/src/runtime/node/http.js index a8529d91..f663174f 100755 --- a/src/runtime/node/http.js +++ b/src/runtime/node/http.js @@ -1,6 +1,5 @@ import ES6Promise from 'es6-promise'; -import fetch from 'node-fetch'; ES6Promise.polyfill(); -export default fetch; \ No newline at end of file +export default fetch; // fetch API available in Node.js 18 and later \ No newline at end of file diff --git a/src/runtime/web/http.js b/src/runtime/web/http.js index 98ccfdf3..ea9ced65 100755 --- a/src/runtime/web/http.js +++ b/src/runtime/web/http.js @@ -1,5 +1,4 @@ import ES6Promise from 'es6-promise'; -import fetch from 'isomorphic-fetch'; ES6Promise.polyfill(); -export default fetch; \ No newline at end of file +export default fetch; // fetch API available in Node.js 18 and later \ No newline at end of file diff --git a/test/entry/findone.js b/test/entry/findone.js index e082486e..130d336e 100755 --- a/test/entry/findone.js +++ b/test/entry/findone.js @@ -743,24 +743,23 @@ test('findOne: .except() - For the reference - Array', function(assert) { * HTTP Error Handling * !*/ -test('findOne: should handle 404 Not Found error', function(assert) { - const Query = Stack.ContentType(contentTypes.invalid_type).Query(); +test('findOne: should handle 422 Unprocessable Entity error', function(assert) { + const Query = Stack.ContentType("invalid_content_type").Query(); Query .toJSON() .findOne() .then(function success() { - assert.fail("Expected 404 error but got a successful response."); + assert.fail("Expected 422 error but got a successful response."); assert.end(); }, function error(err) { - assert.equal(err.http_code, 404, 'Should return HTTP status 404.'); - assert.ok(err.http_message, 'Error message should be present.'); - console.error("Error:", err.http_message); + assert.equal(err.http_code, 422, 'Should return HTTP status 422.'); + assert.ok(err.http_message, 'Unprocessable Entity'); assert.end(); }); }); -test('findOne: should handle 401 Unauthorized error', function(assert) { +test('findOne: should handle 412 Unauthorized error', function(assert) { Stack.headers = { authorization: 'InvalidAPIKey' }; // Simulating an invalid API key const Query = Stack.ContentType(contentTypes.source).Query(); @@ -768,30 +767,11 @@ test('findOne: should handle 401 Unauthorized error', function(assert) { .toJSON() .findOne() .then(function success() { - assert.fail("Expected 401 error but got a successful response."); + assert.fail("Expected 412 error but got a successful response."); assert.end(); }, function error(err) { - assert.equal(err.http_code, 401, 'Should return HTTP status 401.'); - assert.ok(err.http_message, 'Error message should be present.'); - console.error("Error:", err.http_message); + assert.equal(err.http_code, 412, 'Should return HTTP status 412.'); + assert.ok(err.http_message, 'Precondition Failed.'); assert.end(); }); }); - -test('findOne: should handle 500 Internal Server Error', function(assert) { - const mockStack = Contentstack.Stack({ ...init.stack, host: 'invalid.host' }); // Simulating a server error - const Query = mockStack.ContentType(contentTypes.source).Query(); - - Query - .toJSON() - .findOne() - .then(function success() { - assert.fail("Expected 500 error but got a successful response."); - assert.end(); - }, function error(err) { - assert.equal(err.http_code, 500, 'Should return HTTP status 500.'); - assert.ok(err.http_message, 'Error message should be present.'); - console.error("Error:", err.http_message); - assert.end(); - }); -}); \ No newline at end of file diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index f0bfbaee..625d37de 100755 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -42,6 +42,9 @@ module.exports = function(options) { protectWebpackAssets: false, cleanAfterEveryBuildPatterns: ['*.LICENSE.txt'] }) - ] + ], + optimization: { + minimize: false, // Prevents code compression/minification + }, }; } \ No newline at end of file diff --git a/webpack/webpack.nativescript.js b/webpack/webpack.nativescript.js index 479770dc..76479cb3 100755 --- a/webpack/webpack.nativescript.js +++ b/webpack/webpack.nativescript.js @@ -1,13 +1,13 @@ 'use strict'; const path = require('path'); -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); var nodeExternals = require('webpack-node-externals'); const commonConfig = require('./webpack.common.js'); module.exports = function(options) { - return webpackMerge(commonConfig(), { + return merge(commonConfig(), { output: { libraryTarget: "commonjs2", path: path.join(__dirname, "../dist/nativescript"), @@ -50,6 +50,9 @@ module.exports = function(options) { } ], }] - } + }, + optimization: { + minimize: false, // Prevents code compression/minification + }, }); } \ No newline at end of file diff --git a/webpack/webpack.node.js b/webpack/webpack.node.js index f1178b9a..c306223b 100755 --- a/webpack/webpack.node.js +++ b/webpack/webpack.node.js @@ -1,12 +1,12 @@ 'use strict'; const path = require('path'); -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); var nodeExternals = require('webpack-node-externals'); const commonConfig = require('./webpack.common.js'); module.exports = function(options) { - return webpackMerge(commonConfig(), { + return merge(commonConfig(), { output: { libraryTarget: "commonjs2", path: path.join(__dirname, "../dist/node"), @@ -49,5 +49,8 @@ module.exports = function(options) { }], }] }, + optimization: { + minimize: false, // Prevents code compression/minification + }, }); } \ No newline at end of file diff --git a/webpack/webpack.react-native.js b/webpack/webpack.react-native.js index de9f3fd3..cf7c9a28 100755 --- a/webpack/webpack.react-native.js +++ b/webpack/webpack.react-native.js @@ -1,14 +1,14 @@ 'use strict'; const path = require('path'); -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); const TerserPlugin = require("terser-webpack-plugin"); var nodeExternals = require('webpack-node-externals'); const commonConfig = require('./webpack.common.js'); module.exports = function(options) { - return webpackMerge(commonConfig(), { + return merge(commonConfig(), { output: { libraryTarget: "commonjs2", path: path.join(__dirname, "../dist/react-native"), @@ -29,12 +29,12 @@ module.exports = function(options) { externalsPresets: { node: true }, - optimization: { - minimize: true, - minimizer: [new TerserPlugin({ - terserOptions: { output: { ascii_only: true } } - })], - }, + // optimization: { + // minimize: true, + // minimizer: [new TerserPlugin({ + // terserOptions: { output: { ascii_only: true } } + // })], + // }, module: { rules: [{ test: /\.js?$/, @@ -57,6 +57,9 @@ module.exports = function(options) { } ], }] - } + }, + optimization: { + minimize: false, // Prevents code compression/minification + }, }); } \ No newline at end of file diff --git a/webpack/webpack.web.js b/webpack/webpack.web.js index 23628b50..00539c10 100755 --- a/webpack/webpack.web.js +++ b/webpack/webpack.web.js @@ -1,13 +1,13 @@ 'use strict'; const path = require('path'); -const webpackMerge = require('webpack-merge'); +const { merge } = require('webpack-merge'); const commonConfig = require('./webpack.common.js'); const webpack = require('webpack'); module.exports = function(options) { - return webpackMerge(commonConfig(), { + return merge(commonConfig(), { output: { library: "Contentstack", libraryTarget: "umd", @@ -54,6 +54,9 @@ module.exports = function(options) { new webpack.ProvidePlugin({ global: require.resolve('./../global.js') }) - ] + ], + optimization: { + minimize: true, + }, }); } \ No newline at end of file From 6e5366cafd11c2ee06efee5180c2ee0e1c5baaa7 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Thu, 30 Jan 2025 12:57:05 +0530 Subject: [PATCH 26/76] DX | 27-01-2025 | Release (#269) (#276) * fix: added fix for updateasseturl for handling jrte within blocks * dropping isomorphic-fetch and node-fetch * version bumpt to 3.23.1 * removed commented lines * Updated error codes in testcases * fix: disable minification for improved debugging * fix: setting minimize to true for browser * verison bump * license update * Updated slack bolt and qs * version fixed * sanity update for dev11 --------- Co-authored-by: cs-raj <122264749+cs-raj@users.noreply.github.com> Co-authored-by: Vikram Kalta Co-authored-by: Vikram Kalta <65945391+vkalta@users.noreply.github.com> Co-authored-by: harshitha.d Co-authored-by: harshithad0703 <104908717+harshithad0703@users.noreply.github.com> From baae6a1e40e0f3cd14d2983b676d48d1af3a71bb Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Thu, 30 Jan 2025 12:57:50 +0530 Subject: [PATCH 27/76] =?UTF-8?q?DX=20|=2027-01-2025=20|=20Release=20|=20R?= =?UTF-8?q?efactor=20getCacheCallback=20to=20directly=20use=20parent=20pro?= =?UTF-8?q?mise's=20resolve=20an=E2=80=A6=20(#272)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Refactor getCacheCallback to directly use parent promise's resolve an… (#271) * Refactor getCacheCallback to directly use parent promise's resolve and reject, simplifying error handling and avoiding nested promises. * Updated utils.js file * Fixed empty object error when API throw error * removed cheerio package as it had high vulnerability in latest update * update sanity reports files * version bump to 3.24.2 --------- Co-authored-by: harshitha.d Co-authored-by: harshithad0703 <104908717+harshithad0703@users.noreply.github.com> --- CHANGELOG.md | 11 + package-lock.json | 1146 ++++++++++++++++++++++++---------------- package.json | 5 +- sanity-report-dev11.js | 5 +- sanity-report.js | 5 +- src/core/lib/utils.js | 35 +- 6 files changed, 735 insertions(+), 472 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59d6b00b..16ba84ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ ## Change log +### Version: 3.24.1 +#### Date: January-27-2025 +##### Fix: + - Added HTTP error codes in the findOne method + +### Version: 3.24.0 +#### Date: January-27-2025 +##### Enhancement: + - updateasseturl for handling jrte within blocks + - version bumps + - Fixed testcases ### Version: 3.23.0 #### Date: December-05-2024 diff --git a/package-lock.json b/package-lock.json index 4c44965e..79747a65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,15 @@ { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.2", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", - "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", @@ -31,7 +30,9 @@ "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", + "jquery": "^3.7.1", "jsdoc": "^4.0.4", + "jsdom": "^26.0.0", "jshint": "^2.13.6", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", @@ -68,6 +69,27 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz", + "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -94,22 +116,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", + "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", + "@babel/helpers": "^7.26.7", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/traverse": "^7.26.7", + "@babel/types": "^7.26.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -393,27 +415,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", + "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", - "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", + "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.5" + "@babel/types": "^7.26.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -1546,13 +1568,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1629,15 +1651,15 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", + "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/compat-data": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", @@ -1651,7 +1673,7 @@ "@babel/plugin-transform-arrow-functions": "^7.25.9", "@babel/plugin-transform-async-generator-functions": "^7.25.9", "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", @@ -1662,7 +1684,7 @@ "@babel/plugin-transform-duplicate-keys": "^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-for-of": "^7.25.9", "@babel/plugin-transform-function-name": "^7.25.9", @@ -1671,12 +1693,12 @@ "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", @@ -1693,7 +1715,7 @@ "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", @@ -1728,9 +1750,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", + "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1756,17 +1778,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", - "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", + "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.5", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/types": "^7.26.5", + "@babel/types": "^7.26.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1775,9 +1797,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", - "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", + "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", "dev": true, "license": "MIT", "dependencies": { @@ -1796,11 +1818,126 @@ "license": "MIT" }, "node_modules/@contentstack/utils": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.15.tgz", - "integrity": "sha512-m/FNx8LwSquMWo+KQ+zyBALEQTeFuldpLkqTrWXPEtmkPMCNnrF3aLcYHmcpLs7B1nux3wPRD6njhMDUU57giQ==", + "version": "1.3.16", + "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.16.tgz", + "integrity": "sha512-HfVEwh7Da8xV4iZth/ci5bcOqszTx/U2mOzsWbyjHLeOfiU9U7uj6DefrrAPhNhL7JgCq/EpRd3vFtaxiEHBlA==", "license": "MIT" }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", + "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", + "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", @@ -2560,12 +2697,13 @@ "license": "MIT" }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", - "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", + "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", "dev": true, "license": "MIT", "dependencies": { + "@types/ms": "*", "@types/node": "*" } }, @@ -2601,10 +2739,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { - "version": "22.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", - "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "version": "22.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", + "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "dev": true, "license": "MIT", "dependencies": { @@ -2626,9 +2771,9 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", + "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", "dev": true, "license": "MIT", "dependencies": { @@ -3121,6 +3266,16 @@ "dev": true, "license": "MIT" }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3398,19 +3553,6 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", - "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/body-parser/node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3481,12 +3623,6 @@ "node": ">= 0.6" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3660,9 +3796,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001692", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", - "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", + "version": "1.0.30001696", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", + "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", "dev": true, "funding": [ { @@ -3730,48 +3866,6 @@ "node": "*" } }, - "node_modules/cheerio": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", - "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "encoding-sniffer": "^0.2.0", - "htmlparser2": "^9.1.0", - "parse5": "^7.1.2", - "parse5-htmlparser2-tree-adapter": "^7.0.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^6.19.5", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=18.17" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -4172,32 +4266,32 @@ "node": "*" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "license": "BSD-2-Clause", + "node_modules/cssstyle": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", + "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", + "dev": true, + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "@asamuzakjp/css-color": "^2.8.2", + "rrweb-cssom": "^0.8.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=18" } }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=18" } }, "node_modules/data-view-buffer": { @@ -4278,6 +4372,13 @@ } } }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "dev": true, + "license": "MIT" + }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -4471,23 +4572,21 @@ } }, "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" } }, - "node_modules/domelementtype": { + "node_modules/dom-serializer/node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, "funding": [ { "type": "github", @@ -4496,33 +4595,40 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", + "dev": true, + "dependencies": { + "domelementtype": "1" } }, "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "dom-serializer": "0", + "domelementtype": "1" } }, "node_modules/dotenv": { @@ -4606,9 +4712,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.83", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", - "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", + "version": "1.5.88", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.88.tgz", + "integrity": "sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==", "dev": true, "license": "ISC" }, @@ -4652,19 +4758,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding-sniffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", - "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, "node_modules/enhanced-resolve": { "version": "5.18.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", @@ -4680,16 +4773,11 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", + "dev": true, + "license": "BSD-like" }, "node_modules/envinfo": { "version": "7.14.0", @@ -5196,9 +5284,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", - "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, "funding": [ { @@ -5233,9 +5321,9 @@ } }, "node_modules/fetch-mock": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.0.tgz", - "integrity": "sha512-XjgxM582kB0SzPOqH2UdGTwSqga8A8aBPjxcYr0wTeOlCWpZoK6zBrPzltECUTu6Zt3VTWafmKF599LN9BRN5Q==", + "version": "12.2.1", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.1.tgz", + "integrity": "sha512-ZUEDYDCr/qeZ3paYVyt6VkmuV/3HhZFVsih1Mt8hAAT34Gsc6HUv2qaFd5nh82BMhOaFjYL2yZbYi5VMuIhXKw==", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", @@ -5315,14 +5403,43 @@ "dev": true, "license": "MIT" }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/fetch-mock-jest/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "minimatch": "^5.0.1" + "punycode": "^2.1.0" + } + }, + "node_modules/fetch-mock-jest/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/fetch-mock-jest/node_modules/whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { @@ -5470,13 +5587,19 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", + "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/form-data": { @@ -5559,6 +5682,21 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5907,6 +6045,19 @@ "dev": true, "license": "MIT" }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -5915,22 +6066,17 @@ "license": "MIT" }, "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" } }, "node_modules/http-errors": { @@ -5964,6 +6110,20 @@ "node": ">= 14" } }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -5975,12 +6135,13 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" @@ -6126,12 +6287,13 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", - "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { + "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", @@ -6415,6 +6577,13 @@ "node": ">=0.10.0" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -6609,9 +6778,9 @@ } }, "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true, "license": "MIT" }, @@ -7684,6 +7853,13 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "dev": true, + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7759,6 +7935,47 @@ "node": ">=12.0.0" } }, + "node_modules/jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -7791,94 +8008,6 @@ "jshint": "bin/jshint" } }, - "node_modules/jshint/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/jshint/node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/jshint/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/jshint/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/jshint/node_modules/domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/jshint/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/jshint/node_modules/entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", - "dev": true, - "license": "BSD-like" - }, - "node_modules/jshint/node_modules/htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - } - }, - "node_modules/jshint/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "license": "MIT" - }, "node_modules/jshint/node_modules/minimatch": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", @@ -7892,26 +8021,6 @@ "node": "*" } }, - "node_modules/jshint/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/jshint/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/jshint/node_modules/strip-json-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", @@ -8210,6 +8319,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "dev": true, "license": "MIT" }, @@ -8354,6 +8464,19 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", @@ -8545,6 +8668,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mock-property/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8671,9 +8801,9 @@ } }, "node_modules/nodemailer": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.16.tgz", - "integrity": "sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.0.tgz", + "integrity": "sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==", "dev": true, "license": "MIT-0", "engines": { @@ -8703,17 +8833,12 @@ "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } + "node_modules/nwsapi": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", @@ -9009,6 +9134,7 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, "license": "MIT", "dependencies": { "entities": "^4.5.0" @@ -9017,29 +9143,17 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" }, "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/parseurl": { @@ -9497,6 +9611,19 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -9505,18 +9632,16 @@ "license": "MIT" }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, "node_modules/recast": { @@ -9840,6 +9965,13 @@ "node": ">= 0.10" } }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -9860,6 +9992,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9898,6 +10037,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -9939,8 +10085,22 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/schema-utils": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", @@ -10362,14 +10522,11 @@ "license": "MIT" }, "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } + "license": "MIT" }, "node_modules/string-length": { "version": "4.0.2", @@ -10598,6 +10755,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, "node_modules/tap-html": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tap-html/-/tap-html-1.1.0.tgz", @@ -10630,13 +10794,6 @@ "tap-json": "bin/tap-json" } }, - "node_modules/tap-json/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "license": "MIT" - }, "node_modules/tap-json/node_modules/object-keys": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", @@ -10644,26 +10801,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tap-json/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/tap-json/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/tap-json/node_modules/tap-parser": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz", @@ -10930,6 +11067,51 @@ "readable-stream": "3" } }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/tldts": { + "version": "6.1.75", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.75.tgz", + "integrity": "sha512-+lFzEXhpl7JXgWYaXcB6DqTYXbUArvrWAE/5ioq/X3CdWLbDjpPP4XTrQBmEJ91y3xbe4Fkw7Lxv4P3GWeJaNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.75" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.75", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.75.tgz", + "integrity": "sha512-AOvV5YYIAFFBfransBzSTyztkc3IMfz5Eq3YluaRiEu55nn43Fzaufx70UqEKYr8BoLCach4q8g/bg6e5+/aFw==", + "dev": true, + "license": "MIT" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -10960,14 +11142,30 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", + "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" } }, "node_modules/ts-jest": { @@ -11225,15 +11423,6 @@ "dev": true, "license": "MIT" }, - "node_modules/undici": { - "version": "6.21.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", - "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -11388,6 +11577,19 @@ "node": ">= 0.8" } }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -11413,11 +11615,14 @@ } }, "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } }, "node_modules/webpack": { "version": "5.97.1", @@ -11657,6 +11862,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" @@ -11665,25 +11871,41 @@ "node": ">=18" } }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", "dev": true, "license": "MIT", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/which": { @@ -11769,6 +11991,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -11877,6 +12106,23 @@ } } }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", diff --git a/package.json b/package.json index 94e20ac5..86fe9847 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.2", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { @@ -80,7 +80,9 @@ "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", + "jsdom": "^26.0.0", "jshint": "^2.13.6", + "jquery": "^3.7.1", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", "nodemailer": "^6.9.16", @@ -100,7 +102,6 @@ }, "dependencies": { "@contentstack/utils": "^1.3.15", - "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index a178d498..7c124c83 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -1,6 +1,6 @@ const fs = require("fs"); +const { JSDOM } = require("jsdom"); const dotenv = require("dotenv"); -const cheerio = require("cheerio"); dotenv.config(); @@ -10,7 +10,8 @@ const user3 = process.env.USER3; const user4 = process.env.USER4; const tapHtmlContent = fs.readFileSync("./tap-html.html", "utf8"); -const $ = cheerio.load(tapHtmlContent); +const dom = new JSDOM(tapHtmlContent); +const $ = require("jquery")(dom.window); const totalCount = $(".nav a:nth-child(2)") .text() diff --git a/sanity-report.js b/sanity-report.js index dd962f11..38810001 100644 --- a/sanity-report.js +++ b/sanity-report.js @@ -1,12 +1,13 @@ const fs = require('fs'); const { App } = require('@slack/bolt'); +const { JSDOM } = require("jsdom"); const dotenv = require('dotenv') dotenv.config() -const cheerio = require('cheerio'); const tapHtmlContent = fs.readFileSync('./tap-html.html', 'utf8'); const report = `./tap-html.html` -const $ = cheerio.load(tapHtmlContent); +const dom = new JSDOM(tapHtmlContent); +const $ = require("jquery")(dom.window); const totalTime = $('.nav a:nth-child(1)').text().trim().replace('Total Time', ''); const totalCount = $('.nav a:nth-child(2)').text().trim().replace('Total Count', ''); diff --git a/src/core/lib/utils.js b/src/core/lib/utils.js index 121fb413..05af3cd1 100755 --- a/src/core/lib/utils.js +++ b/src/core/lib/utils.js @@ -252,19 +252,20 @@ export function sendRequest(queryObject, options) { } } - let getCacheCallback = function() { + let getCacheCallback = function(resolve, reject) { return function(err, entries) { - return new Promise(function(resolve, reject) { - try { - if (err) reject(err); - if (!tojson) entries = resultWrapper(entries); - resolve(spreadResult(entries)); - } catch (e) { - reject(e) + try { + if (err) { + return reject(err); // Propagate the error to the parent promise } - }); - } - } + if (!tojson) entries = resultWrapper(entries); + resolve(spreadResult(entries)); // Propagate the result to the parent promise + } catch (e) { + reject(e); // Handle any synchronous errors + } + }; + }; + let callback = function(continueFlag, resolve, reject) { if (continueFlag) { @@ -291,7 +292,7 @@ export function sendRequest(queryObject, options) { if (err || !_data || (_data.entries.length === 0 && _data.assets.length === 0)) { return reject({ error_code: 141, error_message: 'The requested entry doesn\'t exist.' }); } - getCacheCallback()(err, _data); + getCacheCallback(resolve, reject)(err, _data); }); return } else { @@ -338,12 +339,14 @@ export function sendRequest(queryObject, options) { } }.bind(self)) .catch(function(error) { - if (cachePolicy === 2 && self.provider !== null) { - self.provider.get(hashQuery, getCacheCallback()); - } else { - return reject(error); + if(error){ + reject(error); } + else if (cachePolicy === 2 && self.provider !== null) { + self.provider.get(hashQuery, getCacheCallback(resolve, reject)); + } }); + } } switch (cachePolicy) { From d296cfc70518b97d8889eb104f2cdce4aa9a39a5 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:01:48 +0530 Subject: [PATCH 28/76] Back merge (#277) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * DX | 27-01-2025 | Release (#269) (#276) * fix: added fix for updateasseturl for handling jrte within blocks * dropping isomorphic-fetch and node-fetch * version bumpt to 3.23.1 * removed commented lines * Updated error codes in testcases * fix: disable minification for improved debugging * fix: setting minimize to true for browser * verison bump * license update * Updated slack bolt and qs * version fixed * sanity update for dev11 --------- Co-authored-by: cs-raj <122264749+cs-raj@users.noreply.github.com> Co-authored-by: Vikram Kalta Co-authored-by: Vikram Kalta <65945391+vkalta@users.noreply.github.com> Co-authored-by: harshitha.d Co-authored-by: harshithad0703 <104908717+harshithad0703@users.noreply.github.com> * DX | 27-01-2025 | Release | Refactor getCacheCallback to directly use parent promise's resolve an… (#272) * Refactor getCacheCallback to directly use parent promise's resolve an… (#271) * Refactor getCacheCallback to directly use parent promise's resolve and reject, simplifying error handling and avoiding nested promises. * Updated utils.js file * Fixed empty object error when API throw error * removed cheerio package as it had high vulnerability in latest update * update sanity reports files * version bump to 3.24.2 --------- Co-authored-by: harshitha.d Co-authored-by: harshithad0703 <104908717+harshithad0703@users.noreply.github.com> --------- Co-authored-by: cs-raj <122264749+cs-raj@users.noreply.github.com> Co-authored-by: Vikram Kalta Co-authored-by: Vikram Kalta <65945391+vkalta@users.noreply.github.com> Co-authored-by: harshitha.d Co-authored-by: harshithad0703 <104908717+harshithad0703@users.noreply.github.com> From c5b51445b2a1d7a07dc418bf47acc272b6d171a6 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 30 Jan 2025 15:04:51 +0530 Subject: [PATCH 29/76] update packages with master --- package-lock.json | 2082 +++++++++------------------------------------ package.json | 21 +- 2 files changed, 415 insertions(+), 1688 deletions(-) diff --git a/package-lock.json b/package-lock.json index 83a78bcd..b376c3bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,16 +13,10 @@ "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", - "fetch-mock": "^12.2.0", "localStorage": "1.0.4", "qs": "^6.14.0" - "qs": "^6.14.0" }, "devDependencies": { - "@babel/core": "^7.26.0", - "@babel/preset-env": "^7.26.0", - "@babel/runtime": "^7.26.0", - "@slack/bolt": "^4.2.0", "@babel/core": "^7.26.0", "@babel/preset-env": "^7.26.0", "@babel/runtime": "^7.26.0", @@ -32,27 +26,21 @@ "clean-webpack-plugin": "^4.0.0", "compression-webpack-plugin": "^11.1.0", "dotenv": "^16.4.7", - "compression-webpack-plugin": "^11.1.0", - "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", "fetch-mock-jest": "^1.5.1", "http-proxy-agent": "^7.0.2", - "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", - "jsdom": "^26.0.0", "jshint": "^2.13.6", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", "nodemailer": "^6.9.16", - "nodemailer": "^6.9.16", "string-replace-loader": "^3.1.0", "tap-html": "^1.1.0", "tap-json": "1.0.0", "tape": "4.17.0", "terser-webpack-plugin": "^5.3.11", - "terser-webpack-plugin": "^5.3.11", "ts-jest": "^29.2.5", "typescript": "^4.9.5", "uglify-js": "3.19.3", @@ -60,11 +48,6 @@ "webpack-cli": "^6.0.1", "webpack-md5-hash": "0.0.6", "webpack-merge": "6.0.1", - "uglify-js": "3.19.3", - "webpack": "^5.97.1", - "webpack-cli": "^6.0.1", - "webpack-md5-hash": "0.0.6", - "webpack-merge": "6.0.1", "webpack-node-externals": "^3.0.0" }, "engines": { @@ -85,27 +68,6 @@ "node": ">=6.0.0" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz", - "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.1", - "@csstools/css-color-parser": "^3.0.7", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -122,9 +84,6 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", - "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", @@ -166,17 +125,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", - "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.5", - "@babel/types": "^7.26.5", "@babel/parser": "^7.26.5", "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", @@ -201,16 +155,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", @@ -244,9 +194,6 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", - "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", @@ -255,7 +202,6 @@ "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "regexpu-core": "^6.2.0", - "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -342,9 +288,6 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", @@ -373,9 +316,6 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", - "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", @@ -385,7 +325,6 @@ "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", "@babel/traverse": "^7.26.5" - "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -468,13 +407,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", - "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", + "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.5" + "@babel/types": "^7.26.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -905,9 +844,6 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", - "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", @@ -915,7 +851,6 @@ "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" - "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1095,9 +1030,6 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", - "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", @@ -1246,9 +1178,6 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", - "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", @@ -1257,8 +1186,6 @@ "dependencies": { "@babel/helper-module-transforms": "^7.26.0", "@babel/helper-plugin-utils": "^7.25.9" - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1337,9 +1264,6 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.26.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", - "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "version": "7.26.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", @@ -1347,7 +1271,6 @@ "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" - "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1833,17 +1756,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", - "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", + "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.5", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/types": "^7.26.5", + "@babel/types": "^7.26.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1852,9 +1775,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", - "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", + "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", "dev": true, "license": "MIT", "dependencies": { @@ -1873,130 +1796,12 @@ "license": "MIT" }, "node_modules/@contentstack/utils": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.15.tgz", - "integrity": "sha512-m/FNx8LwSquMWo+KQ+zyBALEQTeFuldpLkqTrWXPEtmkPMCNnrF3aLcYHmcpLs7B1nux3wPRD6njhMDUU57giQ==", + "version": "1.3.16", + "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.16.tgz", + "integrity": "sha512-HfVEwh7Da8xV4iZth/ci5bcOqszTx/U2mOzsWbyjHLeOfiU9U7uj6DefrrAPhNhL7JgCq/EpRd3vFtaxiEHBlA==", "license": "MIT" }, - "node_modules/@csstools/color-helpers": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", - "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", - "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", - "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.0.1", - "@csstools/css-calc": "^2.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", - "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.3" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", - "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@discoveryjs/json-ext": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", - "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "version": "0.6.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", @@ -2004,7 +1809,6 @@ "license": "MIT", "engines": { "node": ">=14.17.0" - "node": ">=14.17.0" } }, "node_modules/@istanbuljs/load-nyc-config": { @@ -2362,9 +2166,6 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", @@ -2429,9 +2230,6 @@ } }, "node_modules/@jsdoc/salty": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz", - "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==", "version": "0.2.9", "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz", "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==", @@ -2505,9 +2303,6 @@ } }, "node_modules/@slack/bolt": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-4.2.0.tgz", - "integrity": "sha512-KQGUkC37t6DUR+FVglHmcUrMpdCLbY9wpZXfjW6CUNmQnINits+EeOrVN/5xPcISKJcBIhqgrarLpwU9tpESTw==", "version": "4.2.0", "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-4.2.0.tgz", "integrity": "sha512-KQGUkC37t6DUR+FVglHmcUrMpdCLbY9wpZXfjW6CUNmQnINits+EeOrVN/5xPcISKJcBIhqgrarLpwU9tpESTw==", @@ -2517,25 +2312,17 @@ "@slack/logger": "^4.0.0", "@slack/oauth": "^3.0.2", "@slack/socket-mode": "^2.0.3", - "@slack/oauth": "^3.0.2", - "@slack/socket-mode": "^2.0.3", "@slack/types": "^2.13.0", "@slack/web-api": "^7.8.0", "axios": "^1.7.8", "express": "^5.0.0", - "@slack/web-api": "^7.8.0", - "axios": "^1.7.8", - "express": "^5.0.0", "path-to-regexp": "^8.1.0", "raw-body": "^3", - "raw-body": "^3", "tsscmp": "^1.0.6" }, "engines": { "node": ">=18", "npm": ">=8.6.0" - "node": ">=18", - "npm": ">=8.6.0" } }, "node_modules/@slack/logger": { @@ -2553,9 +2340,6 @@ } }, "node_modules/@slack/oauth": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-3.0.2.tgz", - "integrity": "sha512-MdPS8AP9n3u/hBeqRFu+waArJLD/q+wOSZ48ktMTwxQLc6HJyaWPf8soqAyS/b0D6IlvI5TxAdyRyyv3wQ5IVw==", "version": "3.0.2", "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-3.0.2.tgz", "integrity": "sha512-MdPS8AP9n3u/hBeqRFu+waArJLD/q+wOSZ48ktMTwxQLc6HJyaWPf8soqAyS/b0D6IlvI5TxAdyRyyv3wQ5IVw==", @@ -2568,47 +2352,29 @@ "@types/node": ">=18", "jsonwebtoken": "^9", "lodash.isstring": "^4" - "@slack/logger": "^4", - "@slack/web-api": "^7.8.0", - "@types/jsonwebtoken": "^9", - "@types/node": ">=18", - "jsonwebtoken": "^9", - "lodash.isstring": "^4" }, "engines": { "node": ">=18", "npm": ">=8.6.0" - "node": ">=18", - "npm": ">=8.6.0" } }, "node_modules/@slack/socket-mode": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-2.0.3.tgz", - "integrity": "sha512-aY1AhQd3HAgxLYC2Mz47dXtW6asjyYp8bJ24MWalg+qFWPaXj8VBYi+5w3rfGqBW5IxlIhs3vJTEQtIBrqQf5A==", "version": "2.0.3", "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-2.0.3.tgz", "integrity": "sha512-aY1AhQd3HAgxLYC2Mz47dXtW6asjyYp8bJ24MWalg+qFWPaXj8VBYi+5w3rfGqBW5IxlIhs3vJTEQtIBrqQf5A==", "dev": true, "license": "MIT", "dependencies": { - "@slack/logger": "^4", - "@slack/web-api": "^7.8.0", - "@types/node": ">=18", - "@types/ws": "^8", "@slack/logger": "^4", "@slack/web-api": "^7.8.0", "@types/node": ">=18", "@types/ws": "^8", "eventemitter3": "^5", "ws": "^8" - "ws": "^8" }, "engines": { "node": ">= 18", "npm": ">= 8.6.0" - "node": ">= 18", - "npm": ">= 8.6.0" } }, "node_modules/@slack/types": { @@ -2623,22 +2389,12 @@ } }, "node_modules/@slack/web-api": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.8.0.tgz", - "integrity": "sha512-d4SdG+6UmGdzWw38a4sN3lF/nTEzsDxhzU13wm10ejOpPehtmRoqBKnPztQUfFiWbNvSb4czkWYJD4kt+5+Fuw==", "version": "7.8.0", "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.8.0.tgz", "integrity": "sha512-d4SdG+6UmGdzWw38a4sN3lF/nTEzsDxhzU13wm10ejOpPehtmRoqBKnPztQUfFiWbNvSb4czkWYJD4kt+5+Fuw==", "dev": true, "license": "MIT", "dependencies": { - "@slack/logger": "^4.0.0", - "@slack/types": "^2.9.0", - "@types/node": ">=18.0.0", - "@types/retry": "0.12.0", - "axios": "^1.7.8", - "eventemitter3": "^5.0.1", - "form-data": "^4.0.0", "@slack/logger": "^4.0.0", "@slack/types": "^2.9.0", "@types/node": ">=18.0.0", @@ -2651,16 +2407,10 @@ "p-queue": "^6", "p-retry": "^4", "retry": "^0.13.1" - "is-stream": "^2", - "p-queue": "^6", - "p-retry": "^4", - "retry": "^0.13.1" }, "engines": { "node": ">= 18", "npm": ">= 8.6.0" - "node": ">= 18", - "npm": ">= 8.6.0" } }, "node_modules/@types/babel__core": { @@ -2810,9 +2560,9 @@ "license": "MIT" }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", - "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", + "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", "dev": true, "license": "MIT", "dependencies": { @@ -2860,16 +2610,14 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", - "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "version": "22.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", + "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } - "undici-types": "~6.20.0" - } }, "node_modules/@types/retry": { "version": "0.12.0", @@ -2886,9 +2634,9 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", + "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", "dev": true, "license": "MIT", "dependencies": { @@ -3074,9 +2822,6 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", - "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", "version": "3.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", @@ -3085,41 +2830,26 @@ "engines": { "node": ">=18.12.0" }, - "engines": { - "node": ">=18.12.0" - }, "peerDependencies": { "webpack": "^5.82.0", "webpack-cli": "6.x.x" - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", - "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "version": "3.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18.12.0" "engines": { "node": ">=18.12.0" }, "peerDependencies": { "webpack": "^5.82.0", "webpack-cli": "6.x.x" - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", - "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "version": "3.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", @@ -3128,14 +2858,9 @@ "engines": { "node": ">=18.12.0" }, - "engines": { - "node": ">=18.12.0" - }, "peerDependencies": { "webpack": "^5.82.0", "webpack-cli": "6.x.x" - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -3158,9 +2883,6 @@ "license": "Apache-2.0" }, "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", @@ -3169,8 +2891,6 @@ "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" }, "engines": { "node": ">= 0.6" @@ -3190,9 +2910,6 @@ } }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", @@ -3200,7 +2917,6 @@ "license": "MIT", "engines": { "node": ">= 14" - "node": ">= 14" } }, "node_modules/ajv": { @@ -3328,9 +3044,6 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", @@ -3339,8 +3052,6 @@ "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -3350,9 +3061,6 @@ } }, "node_modules/array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", @@ -3383,9 +3091,6 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "version": "1.0.4", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", @@ -3394,16 +3099,11 @@ "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", - "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -3463,9 +3163,6 @@ } }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "version": "1.7.9", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", @@ -3688,9 +3385,6 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.2.tgz", - "integrity": "sha512-SNMk0OONlQ01uk8EPeiBvTW7W4ovpL5b1O3t1sjpPgfxOQ6BqQJ6XjxinDPR79Z6HdcD5zBBwr5ssiTlgdNztQ==", "version": "2.0.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.2.tgz", "integrity": "sha512-SNMk0OONlQ01uk8EPeiBvTW7W4ovpL5b1O3t1sjpPgfxOQ6BqQJ6XjxinDPR79Z6HdcD5zBBwr5ssiTlgdNztQ==", @@ -3700,27 +3394,19 @@ "bytes": "3.1.2", "content-type": "~1.0.5", "debug": "3.1.0", - "debug": "3.1.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.5.2", - "iconv-lite": "0.5.2", "on-finished": "2.4.1", "qs": "6.13.0", "raw-body": "^3.0.0", "type-is": "~1.6.18" - "raw-body": "^3.0.0", - "type-is": "~1.6.18" }, "engines": { "node": ">=18" - "node": ">=18" } }, "node_modules/body-parser/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", @@ -3737,7 +3423,7 @@ "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" @@ -3844,9 +3530,6 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", @@ -3867,9 +3550,6 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", "node-releases": "^2.0.19", @@ -3930,17 +3610,12 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", @@ -3966,36 +3641,6 @@ "node": ">= 0.4" } }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/call-bound": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", @@ -4033,9 +3678,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001692", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", - "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", + "version": "1.0.30001696", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", + "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", "dev": true, "funding": [ { @@ -4103,6 +3748,48 @@ "node": "*" } }, + "node_modules/cheerio": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -4337,9 +4024,6 @@ } }, "node_modules/compression-webpack-plugin": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz", - "integrity": "sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==", "version": "11.1.0", "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz", "integrity": "sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==", @@ -4348,12 +4032,9 @@ "dependencies": { "schema-utils": "^4.2.0", "serialize-javascript": "^6.0.2" - "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2" }, "engines": { "node": ">= 18.12.0" - "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -4380,9 +4061,6 @@ } }, "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", "version": "1.0.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", @@ -4423,9 +4101,6 @@ } }, "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", @@ -4434,15 +4109,8 @@ "engines": { "node": ">=6.6.0" } - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } }, "node_modules/core-js": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", - "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", "version": "3.40.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", @@ -4455,9 +4123,6 @@ } }, "node_modules/core-js-compat": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", - "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "version": "3.40.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", @@ -4465,7 +4130,6 @@ "license": "MIT", "dependencies": { "browserslist": "^4.24.3" - "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -4502,9 +4166,6 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", @@ -4529,49 +4190,44 @@ "node": "*" } }, - "node_modules/cssstyle": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", - "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", - "dev": true, - "license": "MIT", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", "dependencies": { - "@asamuzakjp/css-color": "^2.8.2", - "rrweb-cssom": "^0.8.0" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">=18" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", "engines": { - "node": ">=18" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" - "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4581,40 +4237,30 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" - "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/inspect-js" - "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" @@ -4633,9 +4279,6 @@ "dev": true }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", @@ -4704,7 +4347,6 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -4847,21 +4489,23 @@ } }, "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/domelementtype": { + "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, "funding": [ { "type": "github", @@ -4870,30 +4514,19 @@ ], "license": "BSD-2-Clause" }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", - "dev": true, + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { - "domelementtype": "1" + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, "node_modules/domutils": { @@ -4902,14 +4535,15 @@ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "license": "BSD-2-Clause", "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", @@ -4949,20 +4583,6 @@ "node": ">= 0.4" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -5004,9 +4624,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.83", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", - "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", + "version": "1.5.90", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", + "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", "dev": true, "license": "ISC" }, @@ -5050,10 +4670,20 @@ "node": ">= 0.8" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, "node_modules/enhanced-resolve": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", "version": "5.18.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", @@ -5068,11 +4698,16 @@ } }, "node_modules/entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", - "dev": true, - "license": "BSD-like" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/envinfo": { "version": "7.14.0", @@ -5098,17 +4733,12 @@ } }, "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "version": "1.23.9", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", @@ -5118,12 +4748,6 @@ "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.1.0", @@ -5132,25 +4756,14 @@ "get-intrinsic": "^1.2.7", "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", - "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-regex": "^1.2.1", @@ -5159,19 +4772,10 @@ "is-typed-array": "^1.1.15", "is-weakref": "^1.1.0", "math-intrinsics": "^1.1.0", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", @@ -5179,12 +4783,6 @@ "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", @@ -5192,12 +4790,6 @@ "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.18" - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -5206,10 +4798,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-abstract/node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "node_modules/es-abstract/node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -5229,23 +4817,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -5265,9 +4836,6 @@ } }, "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", "version": "1.6.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", @@ -5275,9 +4843,6 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", @@ -5290,31 +4855,22 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" - "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", @@ -5324,9 +4880,6 @@ "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -5562,18 +5115,12 @@ } }, "node_modules/express": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz", - "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==", "version": "5.0.1", "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz", "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.0.1", - "content-disposition": "^1.0.0", "accepts": "^2.0.0", "body-parser": "^2.0.1", "content-disposition": "^1.0.0", @@ -5581,52 +5128,37 @@ "cookie": "0.7.1", "cookie-signature": "^1.2.1", "debug": "4.3.6", - "cookie-signature": "^1.2.1", - "debug": "4.3.6", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "^2.0.0", "fresh": "2.0.0", - "finalhandler": "^2.0.0", - "fresh": "2.0.0", "http-errors": "2.0.0", "merge-descriptors": "^2.0.0", - "merge-descriptors": "^2.0.0", "methods": "~1.1.2", "mime-types": "^3.0.0", - "mime-types": "^3.0.0", "on-finished": "2.4.1", "once": "1.4.0", - "once": "1.4.0", "parseurl": "~1.3.3", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", "router": "^2.0.0", - "router": "^2.0.0", "safe-buffer": "5.2.1", "send": "^1.1.0", "serve-static": "^2.1.0", - "send": "^1.1.0", - "serve-static": "^2.1.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "^2.0.0", - "type-is": "^2.0.0", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "engines": { "node": ">= 18" - "node": ">= 18" } }, "node_modules/express/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", @@ -5638,15 +5170,6 @@ "engines": { "node": ">=6.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, "peerDependenciesMeta": { "supports-color": { "optional": true @@ -5654,19 +5177,12 @@ } }, "node_modules/express/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, "license": "MIT" }, - "node_modules/express/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "node_modules/express/node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", @@ -5682,16 +5198,6 @@ "funding": { "url": "https://github.com/sponsors/ljharb" } - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -5708,9 +5214,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", - "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, "funding": [ { @@ -5722,16 +5228,6 @@ "url": "https://opencollective.com/fastify" } ], - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { @@ -5755,21 +5251,19 @@ } }, "node_modules/fetch-mock": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.0.tgz", - "integrity": "sha512-XjgxM582kB0SzPOqH2UdGTwSqga8A8aBPjxcYr0wTeOlCWpZoK6zBrPzltECUTu6Zt3VTWafmKF599LN9BRN5Q==", + "version": "12.2.1", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.1.tgz", + "integrity": "sha512-ZUEDYDCr/qeZ3paYVyt6VkmuV/3HhZFVsih1Mt8hAAT34Gsc6HUv2qaFd5nh82BMhOaFjYL2yZbYi5VMuIhXKw==", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", "dequal": "^2.0.3", "glob-to-regexp": "^0.4.1", "is-subset-of": "^3.1.10", - "is-subset-of": "^3.1.10", "regexparam": "^3.0.0" }, "engines": { "node": ">=18.11.0" - "node": ">=18.11.0" } }, "node_modules/fetch-mock-jest": { @@ -5777,7 +5271,6 @@ "resolved": "https://registry.npmjs.org/fetch-mock-jest/-/fetch-mock-jest-1.5.1.tgz", "integrity": "sha512-+utwzP8C+Pax1GSka3nFXILWMY3Er2L+s090FOgqVNrNCPp0fDqgXnAHAJf12PLHi0z4PhcTaZNTz8e7K3fjqQ==", "deprecated": "Use https://www.npmjs.com/package/@fetch-mock/jest instead. The underlying version of fetch-mock will also need upgrading: see https://www.wheresrhys.co.uk/fetch-mock/docs/Usage/upgrade-guide", - "deprecated": "Use https://www.npmjs.com/package/@fetch-mock/jest instead. The underlying version of fetch-mock will also need upgrading: see https://www.wheresrhys.co.uk/fetch-mock/docs/Usage/upgrade-guide", "dev": true, "license": "MIT", "dependencies": { @@ -5887,9 +5380,6 @@ } }, "node_modules/finalhandler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.0.0.tgz", - "integrity": "sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==", "version": "2.0.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.0.0.tgz", "integrity": "sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==", @@ -5898,7 +5388,6 @@ "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", - "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -5929,16 +5418,6 @@ "node": ">= 0.8" } }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6025,9 +5504,6 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "version": "4.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", @@ -6037,34 +5513,8 @@ "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "mime-types": "^2.1.12" - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" }, "engines": { - "node": ">= 0.6" "node": ">= 6" } }, @@ -6102,9 +5552,6 @@ } }, "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", @@ -6112,13 +5559,9 @@ "license": "MIT", "engines": { "node": ">= 0.8" - "node": ">= 0.8" } }, "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", @@ -6131,7 +5574,6 @@ }, "engines": { "node": ">=12" - "node": ">=12" } }, "node_modules/fs.realpath": { @@ -6141,6 +5583,21 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -6151,9 +5608,6 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", @@ -6166,12 +5620,6 @@ "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -6211,32 +5659,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "version": "1.2.7", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", "call-bind-apply-helpers": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6268,19 +5705,6 @@ "node": ">= 0.4" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -6295,20 +5719,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" - "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -6400,15 +5819,10 @@ } }, "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "engines": { - "node": ">= 0.4" "engines": { "node": ">= 0.4" }, @@ -6434,9 +5848,6 @@ } }, "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", @@ -6445,9 +5856,6 @@ "engines": { "node": ">= 0.4" }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6467,7 +5875,6 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -6477,10 +5884,6 @@ } }, "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, "version": "1.2.0", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", @@ -6489,9 +5892,6 @@ "dependencies": { "dunder-proto": "^1.0.0" }, - "dependencies": { - "dunder-proto": "^1.0.0" - }, "engines": { "node": ">= 0.4" }, @@ -6500,9 +5900,6 @@ } }, "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", @@ -6549,19 +5946,6 @@ "dev": true, "license": "MIT" }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -6570,17 +5954,22 @@ "license": "MIT" }, "node_modules/htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", - "dev": true, + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", "dependencies": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, "node_modules/http-errors": { @@ -6601,9 +5990,6 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", @@ -6615,7 +6001,6 @@ }, "engines": { "node": ">= 14" - "node": ">= 14" } }, "node_modules/human-signals": { @@ -6629,13 +6014,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", - "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", - "dev": true, + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -6704,9 +6088,6 @@ "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", @@ -6716,17 +6097,12 @@ "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" - "hasown": "^2.0.2", - "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", @@ -6734,7 +6110,6 @@ "license": "MIT", "engines": { "node": ">=10.13.0" - "node": ">=10.13.0" } }, "node_modules/ipaddr.js": { @@ -6748,9 +6123,6 @@ } }, "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", @@ -6759,8 +6131,6 @@ "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6770,9 +6140,6 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", @@ -6782,9 +6149,6 @@ "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -6801,12 +6165,13 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", - "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { + "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", @@ -6820,9 +6185,6 @@ } }, "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", @@ -6831,10 +6193,6 @@ "dependencies": { "has-bigints": "^1.0.2" }, - "engines": { - "node": ">= 0.4" - "has-bigints": "^1.0.2" - }, "engines": { "node": ">= 0.4" }, @@ -6843,9 +6201,6 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", @@ -6854,8 +6209,6 @@ "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6885,9 +6238,6 @@ } }, "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", @@ -6904,17 +6254,12 @@ } }, "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" @@ -6927,9 +6272,6 @@ } }, "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", @@ -6938,8 +6280,6 @@ "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6987,22 +6327,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -7023,10 +6347,6 @@ "node": ">=6" } }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "node_modules/is-generator-function": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", @@ -7039,12 +6359,6 @@ "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, "engines": { "node": ">= 0.4" }, @@ -7052,13 +6366,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-map": { "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", "engines": { @@ -7079,9 +6390,6 @@ } }, "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", @@ -7090,8 +6398,6 @@ "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -7187,9 +6493,6 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", @@ -7197,7 +6500,6 @@ "license": "MIT", "dependencies": { "call-bound": "^1.0.3" - "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7207,9 +6509,6 @@ } }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", @@ -7218,18 +6517,11 @@ "engines": { "node": ">=8" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - "node": ">=8" - }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", @@ -7238,8 +6530,6 @@ "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -7253,7 +6543,6 @@ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", "dev": true, - "dev": true, "license": "MIT" }, "node_modules/is-subset-of": { @@ -7266,20 +6555,7 @@ "typedescriptor": "3.0.2" } }, - "node_modules/is-subset-of": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/is-subset-of/-/is-subset-of-3.1.10.tgz", - "integrity": "sha512-avvaYgVmYWyaZ1NDFiv4y9JGkrE2je3op1Po4VYKKJKR8H2qVPsg1GZuuXl5elCTxTlwAIsrAjWAs4BVrISFRw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "MIT", - "dependencies": { - "typedescriptor": "3.0.2" - } - }, "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", @@ -7289,9 +6565,6 @@ "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -7301,9 +6574,6 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", @@ -7311,21 +6581,7 @@ "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7350,33 +6606,9 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" "call-bound": "^1.0.2" }, "engines": { @@ -7417,9 +6649,9 @@ } }, "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, @@ -7468,9 +6700,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -7913,16 +7145,12 @@ } }, "node_modules/jest-html-reporters": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/jest-html-reporters/-/jest-html-reporters-3.1.7.tgz", - "integrity": "sha512-GTmjqK6muQ0S0Mnksf9QkL9X9z2FGIpNSxC52E0PHDzjPQ1XDu2+XTI3B3FS43ZiUzD1f354/5FfwbNIBzT7ew==", "version": "3.1.7", "resolved": "https://registry.npmjs.org/jest-html-reporters/-/jest-html-reporters-3.1.7.tgz", "integrity": "sha512-GTmjqK6muQ0S0Mnksf9QkL9X9z2FGIpNSxC52E0PHDzjPQ1XDu2+XTI3B3FS43ZiUzD1f354/5FfwbNIBzT7ew==", "dev": true, "license": "MIT", "dependencies": { - "fs-extra": "^10.0.0", "fs-extra": "^10.0.0", "open": "^8.0.3" } @@ -8348,9 +7576,9 @@ "license": "MIT" }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -8496,13 +7724,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "dev": true, - "license": "MIT" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8578,51 +7799,7 @@ "node": ">=12.0.0" } }, - "node_modules/jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", - "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.1", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", @@ -8654,41 +7831,149 @@ "jshint": "bin/jshint" } }, - "node_modules/jshint/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "node_modules/jshint/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" } }, - "node_modules/jshint/node_modules/strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==", + "node_modules/jshint/node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "license": "MIT", - "bin": { - "strip-json-comments": "cli.js" - }, - "engines": { - "node": ">=0.8.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/jshint/node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "node_modules/jshint/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause" }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", + "node_modules/jshint/node_modules/domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/jshint/node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/jshint/node_modules/entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", + "dev": true, + "license": "BSD-like" + }, + "node_modules/jshint/node_modules/htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + } + }, + "node_modules/jshint/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jshint/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jshint/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/jshint/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jshint/node_modules/strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==", + "dev": true, + "license": "MIT", + "bin": { + "strip-json-comments": "cli.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, @@ -8751,9 +8036,9 @@ } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -8830,9 +8115,6 @@ } }, "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", @@ -9048,9 +8330,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -9113,19 +8395,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/markdown-it/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", @@ -9148,15 +8417,6 @@ "node": ">= 0.4" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -9177,9 +8437,6 @@ "license": "MIT" }, "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", @@ -9187,13 +8444,9 @@ "license": "MIT", "engines": { "node": ">= 0.8" - "node": ">= 0.8" } }, "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", @@ -9202,9 +8455,6 @@ "engines": { "node": ">=18" }, - "engines": { - "node": ">=18" - }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -9241,9 +8491,6 @@ } }, "node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", "version": "1.53.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", @@ -9254,9 +8501,6 @@ } }, "node_modules/mime-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.0.tgz", - "integrity": "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==", "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.0.tgz", "integrity": "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==", @@ -9264,7 +8508,6 @@ "license": "MIT", "dependencies": { "mime-db": "^1.53.0" - "mime-db": "^1.53.0" }, "engines": { "node": ">= 0.6" @@ -9343,13 +8586,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mock-property/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -9432,9 +8668,6 @@ } }, "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", @@ -9459,9 +8692,6 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", @@ -9514,12 +8744,17 @@ "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", - "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", - "dev": true, - "license": "MIT" + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } }, "node_modules/object-assign": { "version": "4.1.1", @@ -9571,24 +8806,17 @@ } }, "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -9673,24 +8901,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -9840,7 +9050,6 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "dev": true, "license": "MIT", "dependencies": { "entities": "^4.5.0" @@ -9849,17 +9058,29 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parseurl": { @@ -10256,16 +9477,12 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" - "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -10306,9 +9523,6 @@ } }, "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", "version": "3.0.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", @@ -10318,7 +9532,6 @@ "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.6.3", - "iconv-lite": "0.6.3", "unpipe": "1.0.0" }, "engines": { @@ -10333,16 +9546,18 @@ "license": "MIT" }, "node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/recast": { @@ -10386,9 +9601,6 @@ } }, "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", @@ -10396,33 +9608,8 @@ "license": "MIT", "dependencies": { "resolve": "^1.20.0" - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" "node": ">= 10.13.0" } }, @@ -10487,23 +9674,17 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -10523,9 +9704,6 @@ } }, "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "version": "6.2.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", @@ -10536,7 +9714,6 @@ "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", "regjsparser": "^0.12.0", - "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -10552,9 +9729,6 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "version": "0.12.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", @@ -10567,10 +9741,6 @@ "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "node_modules/regjsparser/node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -10580,12 +9750,8 @@ "bin": { "jsesc": "bin/jsesc" }, - "bin": { - "jsesc": "bin/jsesc" - }, "engines": { "node": ">=6" - "node": ">=6" } }, "node_modules/require-directory": { @@ -10619,16 +9785,12 @@ } }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" @@ -10639,9 +9801,6 @@ "engines": { "node": ">= 0.4" }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10670,9 +9829,6 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", @@ -10726,19 +9882,12 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", @@ -10752,13 +9901,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -10798,16 +9940,12 @@ } }, "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" @@ -10819,26 +9957,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-regex-test/node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-regex-test/node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -10862,26 +9980,9 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, "license": "MIT" }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "version": "4.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", @@ -10895,7 +9996,6 @@ }, "engines": { "node": ">= 10.13.0" - "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -10913,9 +10013,6 @@ } }, "node_modules/send": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", - "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", @@ -10934,44 +10031,21 @@ "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.1" - "debug": "^4.3.5", - "destroy": "^1.2.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "http-errors": "^2.0.0", - "mime-types": "^2.1.35", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" }, "engines": { "node": ">= 18" - "node": ">= 18" } }, - "node_modules/send/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "node_modules/send/node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" "engines": { "node": ">= 0.6" } }, - "node_modules/send/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "node_modules/send/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -10981,15 +10055,7 @@ "engines": { "node": ">= 0.6" } - "license": "MIT", - "engines": { - "node": ">= 0.6" - } }, - "node_modules/send/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "node_modules/send/node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", @@ -10999,12 +10065,8 @@ "dependencies": { "mime-db": "1.52.0" }, - "dependencies": { - "mime-db": "1.52.0" - }, "engines": { "node": ">= 0.6" - "node": ">= 0.6" } }, "node_modules/serialize-javascript": { @@ -11018,9 +10080,6 @@ } }, "node_modules/serve-static": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.1.0.tgz", - "integrity": "sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==", "version": "2.1.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.1.0.tgz", "integrity": "sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==", @@ -11031,14 +10090,9 @@ "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.0.0" - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.0.0" }, "engines": { "node": ">= 18" - "node": ">= 18" } }, "node_modules/set-function-length": { @@ -11046,7 +10100,6 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -11091,21 +10144,6 @@ "node": ">= 0.4" } }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -11153,69 +10191,9 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", @@ -11425,11 +10403,14 @@ "license": "MIT" }, "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } }, "node_modules/string-length": { "version": "4.0.2", @@ -11528,18 +10509,12 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "version": "1.2.10", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", @@ -11547,9 +10522,6 @@ "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -11559,17 +10531,12 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "version": "1.0.9", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", @@ -11578,9 +10545,6 @@ "engines": { "node": ">= 0.4" }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11675,13 +10639,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, "node_modules/tap-html": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tap-html/-/tap-html-1.1.0.tgz", @@ -11714,6 +10671,13 @@ "tap-json": "bin/tap-json" } }, + "node_modules/tap-json/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, "node_modules/tap-json/node_modules/object-keys": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", @@ -11721,6 +10685,26 @@ "dev": true, "license": "MIT" }, + "node_modules/tap-json/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/tap-json/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, + "license": "MIT" + }, "node_modules/tap-json/node_modules/tap-parser": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz", @@ -11847,9 +10831,6 @@ } }, "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "version": "5.37.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", @@ -11869,24 +10850,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", "version": "5.3.11", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", "serialize-javascript": "^6.0.2", "terser": "^5.31.1" - "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", - "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -11997,51 +10971,6 @@ "readable-stream": "3" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/tldts": { - "version": "6.1.75", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.75.tgz", - "integrity": "sha512-+lFzEXhpl7JXgWYaXcB6DqTYXbUArvrWAE/5ioq/X3CdWLbDjpPP4XTrQBmEJ91y3xbe4Fkw7Lxv4P3GWeJaNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.75" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.75", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.75.tgz", - "integrity": "sha512-AOvV5YYIAFFBfransBzSTyztkc3IMfz5Eq3YluaRiEu55nn43Fzaufx70UqEKYr8BoLCach4q8g/bg6e5+/aFw==", - "dev": true, - "license": "MIT" - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -12072,19 +11001,6 @@ "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", - "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -12145,9 +11061,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -12191,9 +11107,6 @@ } }, "node_modules/type-is": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.0.tgz", - "integrity": "sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==", "version": "2.0.0", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.0.tgz", "integrity": "sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==", @@ -12203,53 +11116,38 @@ "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" - "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -12259,9 +11157,6 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", @@ -12270,16 +11165,11 @@ "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -12289,9 +11179,6 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "version": "1.0.7", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", @@ -12304,8 +11191,6 @@ "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -12321,13 +11206,6 @@ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "license": "MIT" }, - "node_modules/typedescriptor": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/typedescriptor/-/typedescriptor-3.0.2.tgz", - "integrity": "sha512-hyVbaCUd18UiXk656g/imaBLMogpdijIEpnhWYrSda9rhvO4gOU16n2nh7xG5lv/rjumnZzGOdz0CEGTmFe0fQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "MIT" - }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -12350,9 +11228,6 @@ "license": "MIT" }, "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", @@ -12364,30 +11239,19 @@ "engines": { "node": ">=0.8.0" } - }, - } }, "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" }, - "engines": { - "node": ">= 0.4" - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, "engines": { "node": ">= 0.4" }, @@ -12412,9 +11276,6 @@ } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", @@ -12486,9 +11347,6 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "version": "1.1.2", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", @@ -12511,7 +11369,6 @@ "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" - "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -12572,19 +11429,6 @@ "node": ">= 0.8" } }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -12617,9 +11461,6 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", "version": "5.97.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", @@ -12631,9 +11472,6 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.14.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", @@ -12670,44 +11508,31 @@ } }, "node_modules/webpack-cli": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", - "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.6.1", - "@webpack-cli/configtest": "^3.0.1", - "@webpack-cli/info": "^3.0.1", - "@webpack-cli/serve": "^3.0.1", "@discoveryjs/json-ext": "^0.6.1", "@webpack-cli/configtest": "^3.0.1", "@webpack-cli/info": "^3.0.1", "@webpack-cli/serve": "^3.0.1", "colorette": "^2.0.14", "commander": "^12.1.0", - "commander": "^12.1.0", "cross-spawn": "^7.0.3", "envinfo": "^7.14.0", - "envinfo": "^7.14.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^3.1.1", "rechoir": "^0.8.0", "webpack-merge": "^6.0.1" - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^6.0.1" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { "node": ">=18.12.0" - "node": ">=18.12.0" }, "funding": { "type": "opencollective", @@ -12715,7 +11540,6 @@ }, "peerDependencies": { "webpack": "^5.82.0" - "webpack": "^5.82.0" }, "peerDependenciesMeta": { "webpack-bundle-analyzer": { @@ -12727,9 +11551,6 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", @@ -12737,13 +11558,9 @@ "license": "MIT", "engines": { "node": ">=18" - "node": ">=18" } }, "node_modules/webpack-md5-hash": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/webpack-md5-hash/-/webpack-md5-hash-0.0.6.tgz", - "integrity": "sha512-HrQ0AJpeXHRa3IjsgyyEfTx8EqYs5y/4x/WklSYsNDcqBixHzCkrmJV5U+4ks+sx7ycKoIdqWLdyuk913FCS+Q==", "version": "0.0.6", "resolved": "https://registry.npmjs.org/webpack-md5-hash/-/webpack-md5-hash-0.0.6.tgz", "integrity": "sha512-HrQ0AJpeXHRa3IjsgyyEfTx8EqYs5y/4x/WklSYsNDcqBixHzCkrmJV5U+4ks+sx7ycKoIdqWLdyuk913FCS+Q==", @@ -12754,9 +11571,6 @@ } }, "node_modules/webpack-merge": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", - "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", @@ -12767,12 +11581,6 @@ "flat": "^5.0.2", "wildcard": "^2.0.1" }, - "engines": { - "node": ">=18.0.0" - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.1" - }, "engines": { "node": ">=18.0.0" } @@ -12867,29 +11675,6 @@ "node": ">= 0.6" } }, - "node_modules/webpack/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -12913,7 +11698,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" @@ -12926,7 +11710,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -13031,8 +11814,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "license": "MIT", "dependencies": { @@ -13041,13 +11822,6 @@ "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" }, - "engines": { - "node": ">= 0.4" - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, "engines": { "node": ">= 0.4" }, @@ -13056,9 +11830,6 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "version": "1.1.18", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", @@ -13068,11 +11839,8 @@ "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", "for-each": "^0.3.3", "gopd": "^1.2.0", - "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -13129,9 +11897,6 @@ } }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", @@ -13139,12 +11904,10 @@ "license": "MIT", "engines": { "node": ">=10.0.0" - "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" - "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -13155,23 +11918,6 @@ } } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", diff --git a/package.json b/package.json index 12e72c83..9154eaa3 100644 --- a/package.json +++ b/package.json @@ -65,10 +65,6 @@ "tmp": "tmp/contentstack-3.15.0.tgz_1477830884275_0.9869455888401717" }, "devDependencies": { - "@babel/core": "^7.26.0", - "@babel/preset-env": "^7.26.0", - "@babel/runtime": "^7.26.0", - "@slack/bolt": "^4.2.0", "@babel/core": "^7.26.0", "@babel/preset-env": "^7.26.0", "@babel/runtime": "^7.26.0", @@ -78,29 +74,21 @@ "clean-webpack-plugin": "^4.0.0", "compression-webpack-plugin": "^11.1.0", "dotenv": "^16.4.7", - "compression-webpack-plugin": "^11.1.0", - "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", "fetch-mock-jest": "^1.5.1", "http-proxy-agent": "^7.0.2", - "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", - "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", - "jsdom": "^26.0.0", "jshint": "^2.13.6", - "jquery": "^3.7.1", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", "nodemailer": "^6.9.16", - "nodemailer": "^6.9.16", "string-replace-loader": "^3.1.0", "tap-html": "^1.1.0", "tap-json": "1.0.0", "tape": "4.17.0", "terser-webpack-plugin": "^5.3.11", - "terser-webpack-plugin": "^5.3.11", "ts-jest": "^29.2.5", "typescript": "^4.9.5", "uglify-js": "3.19.3", @@ -108,11 +96,6 @@ "webpack-cli": "^6.0.1", "webpack-md5-hash": "0.0.6", "webpack-merge": "6.0.1", - "uglify-js": "3.19.3", - "webpack": "^5.97.1", - "webpack-cli": "^6.0.1", - "webpack-md5-hash": "0.0.6", - "webpack-merge": "6.0.1", "webpack-node-externals": "^3.0.0" }, "dependencies": { @@ -120,9 +103,7 @@ "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", - "fetch-mock": "^12.2.0", "localStorage": "1.0.4", "qs": "^6.14.0" - "qs": "^6.14.0" } -} +} \ No newline at end of file From 3a5bc271b4495f5e260711704d8f79742e6dace8 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 30 Jan 2025 15:13:38 +0530 Subject: [PATCH 30/76] update package files and changeLog --- CHANGELOG.md | 3 +- package-lock.json | 664 +++++++++++++++++++--------------------------- package.json | 2 +- 3 files changed, 278 insertions(+), 391 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16ba84ba..0f6303ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ ## Change log ### Version: 3.24.1 -#### Date: January-27-2025 +#### Date: February-03-2025 ##### Fix: - Added HTTP error codes in the findOne method + - Snyk issue ### Version: 3.24.0 #### Date: January-27-2025 diff --git a/package-lock.json b/package-lock.json index ac8ef509..ae9bfbac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.24.2", + "version": "3.24.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.24.2", + "version": "3.24.1", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", @@ -116,9 +116,6 @@ } }, "node_modules/@babel/core": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", - "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", @@ -129,19 +126,12 @@ "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", "@babel/helper-compilation-targets": "^7.26.5", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.5", - "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.7", "@babel/parser": "^7.26.7", - "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", "@babel/traverse": "^7.26.7", "@babel/types": "^7.26.7", - "@babel/traverse": "^7.26.7", - "@babel/types": "^7.26.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -425,9 +415,6 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", @@ -436,16 +423,12 @@ "dependencies": { "@babel/template": "^7.25.9", "@babel/types": "^7.26.7" - "@babel/types": "^7.26.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", - "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", @@ -453,7 +436,6 @@ "license": "MIT", "dependencies": { "@babel/types": "^7.26.7" - "@babel/types": "^7.26.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -1586,9 +1568,6 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", - "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", @@ -1596,7 +1575,6 @@ "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" - "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1673,18 +1651,12 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", - "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-plugin-utils": "^7.26.5", "@babel/compat-data": "^7.26.5", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-plugin-utils": "^7.26.5", @@ -1702,7 +1674,6 @@ "@babel/plugin-transform-async-generator-functions": "^7.25.9", "@babel/plugin-transform-async-to-generator": "^7.25.9", "@babel/plugin-transform-block-scoped-functions": "^7.26.5", - "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", @@ -1714,7 +1685,6 @@ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", "@babel/plugin-transform-exponentiation-operator": "^7.26.3", - "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-for-of": "^7.25.9", "@babel/plugin-transform-function-name": "^7.25.9", @@ -1724,13 +1694,11 @@ "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", @@ -1748,7 +1716,6 @@ "@babel/plugin-transform-sticky-regex": "^7.25.9", "@babel/plugin-transform-template-literals": "^7.25.9", "@babel/plugin-transform-typeof-symbol": "^7.26.7", - "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", @@ -1783,9 +1750,6 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", - "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", @@ -1814,9 +1778,6 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", - "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", @@ -1826,10 +1787,8 @@ "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", "@babel/parser": "^7.26.7", - "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", "@babel/types": "^7.26.7", - "@babel/types": "^7.26.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1838,9 +1797,6 @@ } }, "node_modules/@babel/types": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", - "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", @@ -1862,9 +1818,6 @@ "license": "MIT" }, "node_modules/@contentstack/utils": { - "version": "1.3.16", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.16.tgz", - "integrity": "sha512-HfVEwh7Da8xV4iZth/ci5bcOqszTx/U2mOzsWbyjHLeOfiU9U7uj6DefrrAPhNhL7JgCq/EpRd3vFtaxiEHBlA==", "version": "1.3.16", "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.16.tgz", "integrity": "sha512-HfVEwh7Da8xV4iZth/ci5bcOqszTx/U2mOzsWbyjHLeOfiU9U7uj6DefrrAPhNhL7JgCq/EpRd3vFtaxiEHBlA==", @@ -2744,16 +2697,12 @@ "license": "MIT" }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", - "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", "version": "9.0.8", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", "dev": true, "license": "MIT", "dependencies": { - "@types/ms": "*", "@types/ms": "*", "@types/node": "*" } @@ -2797,17 +2746,7 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { - "version": "22.12.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", - "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "version": "22.12.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", @@ -2832,9 +2771,6 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", - "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", "version": "8.5.14", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", @@ -3340,16 +3276,6 @@ "node": ">= 0.4" } }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3627,6 +3553,19 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/body-parser/node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3870,9 +3809,6 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001696", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", - "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", "version": "1.0.30001696", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", @@ -4371,6 +4307,43 @@ "node": ">=18" } }, + "node_modules/data-urls/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -4648,66 +4621,6 @@ "node": ">= 10.14.2" } }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, "node_modules/dotenv": { "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", @@ -4850,11 +4763,17 @@ } }, "node_modules/entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, - "license": "BSD-like" + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/envinfo": { "version": "7.14.0", @@ -5361,9 +5280,6 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", @@ -5401,9 +5317,6 @@ } }, "node_modules/fetch-mock": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.1.tgz", - "integrity": "sha512-ZUEDYDCr/qeZ3paYVyt6VkmuV/3HhZFVsih1Mt8hAAT34Gsc6HUv2qaFd5nh82BMhOaFjYL2yZbYi5VMuIhXKw==", "version": "12.2.1", "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.1.tgz", "integrity": "sha512-ZUEDYDCr/qeZ3paYVyt6VkmuV/3HhZFVsih1Mt8hAAT34Gsc6HUv2qaFd5nh82BMhOaFjYL2yZbYi5VMuIhXKw==", @@ -5486,35 +5399,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fetch-mock-jest/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/fetch-mock-jest/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/fetch-mock-jest/node_modules/whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -5670,9 +5554,6 @@ } }, "node_modules/for-each": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", - "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", "version": "0.3.4", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", @@ -5684,13 +5565,6 @@ "engines": { "node": ">= 0.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5775,36 +5649,6 @@ "dev": true, "license": "ISC" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -6173,24 +6017,10 @@ "dev": true, "license": "MIT" }, - "node_modules/htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6243,13 +6073,13 @@ } }, "node_modules/iconv-lite": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", - "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -6395,16 +6225,12 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { - "async-function": "^1.0.0", "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", @@ -6890,9 +6716,9 @@ } }, "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, @@ -8088,6 +7914,43 @@ } } }, + "node_modules/jsdom/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -8120,6 +7983,94 @@ "jshint": "bin/jshint" } }, + "node_modules/jshint/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/jshint/node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/jshint/node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/jshint/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/jshint/node_modules/domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/jshint/node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/jshint/node_modules/entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", + "dev": true, + "license": "BSD-like" + }, + "node_modules/jshint/node_modules/htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + } + }, + "node_modules/jshint/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, "node_modules/jshint/node_modules/minimatch": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", @@ -8133,6 +8084,26 @@ "node": "*" } }, + "node_modules/jshint/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/jshint/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, + "license": "MIT" + }, "node_modules/jshint/node_modules/strip-json-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", @@ -8432,7 +8403,6 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "dev": true, "license": "MIT" }, @@ -8577,19 +8547,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/markdown-it/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", @@ -8781,13 +8738,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mock-property/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8914,9 +8864,6 @@ } }, "node_modules/nodemailer": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.0.tgz", - "integrity": "sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==", "version": "6.10.0", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.0.tgz", "integrity": "sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==", @@ -9259,19 +9206,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -9727,19 +9661,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -9748,16 +9669,18 @@ "license": "MIT" }, "node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/recast": { @@ -10108,13 +10031,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -10153,13 +10069,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -10638,11 +10547,14 @@ "license": "MIT" }, "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } }, "node_modules/string-length": { "version": "4.0.2", @@ -10910,6 +10822,13 @@ "tap-json": "bin/tap-json" } }, + "node_modules/tap-json/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, "node_modules/tap-json/node_modules/object-keys": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", @@ -10917,6 +10836,26 @@ "dev": true, "license": "MIT" }, + "node_modules/tap-json/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/tap-json/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, + "license": "MIT" + }, "node_modules/tap-json/node_modules/tap-parser": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz", @@ -11183,31 +11122,6 @@ "readable-stream": "3" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/tldts": { "version": "6.1.75", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.75.tgz", @@ -11272,16 +11186,13 @@ } }, "node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" + "punycode": "^2.1.0" } }, "node_modules/ts-jest": { @@ -11731,14 +11642,11 @@ } }, "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } + "license": "BSD-2-Clause" }, "node_modules/webpack": { "version": "5.97.1", @@ -11987,19 +11895,6 @@ "node": ">=18" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -12011,17 +11906,15 @@ } }, "node_modules/whatwg-url": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", - "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "license": "MIT", "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "node_modules/which": { @@ -12107,13 +12000,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", diff --git a/package.json b/package.json index 4c521f9a..a33de628 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.24.2", + "version": "3.24.1", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { From 7034ba7f65b2ee66e5cb5579004343606511a6b9 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 30 Jan 2025 15:16:17 +0530 Subject: [PATCH 31/76] updated change log --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f6303ba..ec7c704c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,6 @@ #### Date: February-03-2025 ##### Fix: - Added HTTP error codes in the findOne method - - Snyk issue ### Version: 3.24.0 #### Date: January-27-2025 From 8b359402d6b17ef5b093c3dc716c66dcf7af97f5 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 30 Jan 2025 15:30:11 +0530 Subject: [PATCH 32/76] #262 update readme file --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 0e7ef966..d06ac504 100755 --- a/README.md +++ b/README.md @@ -281,8 +281,7 @@ data.then(function(sync_data, err) { ##### Advanced sync queries -You can use advanced sync queries to fetch custom results while performing initial sync. -[Read advanced sync queries documentation](https://www.contentstack.com/docs/guide/synchronization/using-the-sync-api-with-javascript-sdk#advanced-sync-queries) +[Read advanced sync queries documentation](https://www.contentstack.com/docs/developers/use-the-sync-apis-with-sdk/use-sync-api-with-javascript-sdk#advanced-sync-queries) ### Helpful Links From 0f6cd0e51e104297ea28fa6650a31f603ee78fb4 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:01:26 +0530 Subject: [PATCH 33/76] Fixed license and semgrep issues (#282) --- README.md | 2 +- index.d.ts | 2 +- src/core/contentstack.js | 32 ++++++++++++++++++++------------ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d06ac504..2953f303 100755 --- a/README.md +++ b/README.md @@ -291,7 +291,7 @@ data.then(function(sync_data, err) { ### The MIT License (MIT) -Copyright © 2012-2024 [Contentstack](https://www.contentstack.com). All Rights Reserved +Copyright © 2012-2025 [Contentstack](https://www.contentstack.com). All Rights Reserved Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/index.d.ts b/index.d.ts index 73132162..a829b303 100644 --- a/index.d.ts +++ b/index.d.ts @@ -151,7 +151,7 @@ export class Stack { clearByContentType(): Stack; clearAll(): Stack; getCacheProvider(): object; - getLastActivities(): Promise;; + getLastActivities(): Promise; getContentTypes(param?: object): Promise; sync(params: object): Promise; imageTransform(url: string, params: any): string; diff --git a/src/core/contentstack.js b/src/core/contentstack.js index 20a06eff..89e74a1d 100755 --- a/src/core/contentstack.js +++ b/src/core/contentstack.js @@ -3,12 +3,10 @@ import CacheProvider from './cache-provider/index'; import ContentstackRegion from "./contentstackregion"; /** - * @class - Contentstack -* @description Creates an instance of `Contentstack`. -* @instance -*/ - + * @class Contentstack + * @description Creates an instance of `Contentstack`. + * @instance + */ class Contentstack { constructor(){ @@ -45,8 +43,8 @@ class Contentstack { // Iterate through each object in _embedded_items and update the asset link for (let key in entry._embedded_items) { let embedded_item = entry._embedded_items[key]; - if (Array.isArray(embedded_item)) { + if (Array.isArray(embedded_item)) { embedded_item.forEach((item) => { if (item._content_type_uid == 'sys_assets' && item.filename) { @@ -62,14 +60,24 @@ class Contentstack { return; } } - } - let _entry = {...entry}; + }; + + let _entry = { ...entry }; const keys = key.split("."); + const unsafeKeys = new Set(["__proto__", "constructor", "prototype"]); + for (const k of keys) { - if (_entry[k]) _entry = _entry[k]; - else if (_entry.length) { + // Ensure key is safe before accessing it + if (unsafeKeys.has(k)) continue; + + if (_entry && typeof _entry === "object" && _entry !== null && Object.prototype.hasOwnProperty.call(_entry, k)) { + const newEntry = _entry[k]; + if (typeof newEntry === "object" && newEntry !== null) { + _entry = newEntry; + } + } else if (Array.isArray(_entry)) { for (const block of _entry) { - if (block[k]) { + if (block && typeof block === "object" && Object.prototype.hasOwnProperty.call(block, k)) { _entry = block[k]; } } From 0ed0a14fa8bd6d436cdc6f7af5dd5e1bd02f565e Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:04:16 +0530 Subject: [PATCH 34/76] Fixed license and semgrep issues (#282) (#283) --- README.md | 2 +- index.d.ts | 2 +- src/core/contentstack.js | 32 ++++++++++++++++++++------------ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d06ac504..2953f303 100755 --- a/README.md +++ b/README.md @@ -291,7 +291,7 @@ data.then(function(sync_data, err) { ### The MIT License (MIT) -Copyright © 2012-2024 [Contentstack](https://www.contentstack.com). All Rights Reserved +Copyright © 2012-2025 [Contentstack](https://www.contentstack.com). All Rights Reserved Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/index.d.ts b/index.d.ts index 73132162..a829b303 100644 --- a/index.d.ts +++ b/index.d.ts @@ -151,7 +151,7 @@ export class Stack { clearByContentType(): Stack; clearAll(): Stack; getCacheProvider(): object; - getLastActivities(): Promise;; + getLastActivities(): Promise; getContentTypes(param?: object): Promise; sync(params: object): Promise; imageTransform(url: string, params: any): string; diff --git a/src/core/contentstack.js b/src/core/contentstack.js index 20a06eff..89e74a1d 100755 --- a/src/core/contentstack.js +++ b/src/core/contentstack.js @@ -3,12 +3,10 @@ import CacheProvider from './cache-provider/index'; import ContentstackRegion from "./contentstackregion"; /** - * @class - Contentstack -* @description Creates an instance of `Contentstack`. -* @instance -*/ - + * @class Contentstack + * @description Creates an instance of `Contentstack`. + * @instance + */ class Contentstack { constructor(){ @@ -45,8 +43,8 @@ class Contentstack { // Iterate through each object in _embedded_items and update the asset link for (let key in entry._embedded_items) { let embedded_item = entry._embedded_items[key]; - if (Array.isArray(embedded_item)) { + if (Array.isArray(embedded_item)) { embedded_item.forEach((item) => { if (item._content_type_uid == 'sys_assets' && item.filename) { @@ -62,14 +60,24 @@ class Contentstack { return; } } - } - let _entry = {...entry}; + }; + + let _entry = { ...entry }; const keys = key.split("."); + const unsafeKeys = new Set(["__proto__", "constructor", "prototype"]); + for (const k of keys) { - if (_entry[k]) _entry = _entry[k]; - else if (_entry.length) { + // Ensure key is safe before accessing it + if (unsafeKeys.has(k)) continue; + + if (_entry && typeof _entry === "object" && _entry !== null && Object.prototype.hasOwnProperty.call(_entry, k)) { + const newEntry = _entry[k]; + if (typeof newEntry === "object" && newEntry !== null) { + _entry = newEntry; + } + } else if (Array.isArray(_entry)) { for (const block of _entry) { - if (block[k]) { + if (block && typeof block === "object" && Object.prototype.hasOwnProperty.call(block, k)) { _entry = block[k]; } } From e7a336fc5b4ccdbfe6595ee63d419edf9e33f3e6 Mon Sep 17 00:00:00 2001 From: harshithad0703 <104908717+harshithad0703@users.noreply.github.com> Date: Mon, 3 Feb 2025 19:39:39 +0530 Subject: [PATCH 35/76] DX | 03-02-2025 | Hotfix Release (#281) * update package files and changeLog * updated change log * update readme file * Fixed license and semgrep issues --- CHANGELOG.md | 11 + README.md | 5 +- index.d.ts | 2 +- package-lock.json | 838 +++++++++++++++++++++++++-------------- package.json | 7 +- sanity-report-dev11.js | 5 +- sanity-report.js | 5 +- src/core/contentstack.js | 32 +- src/core/lib/utils.js | 35 +- 9 files changed, 606 insertions(+), 334 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59d6b00b..ec7c704c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ ## Change log +### Version: 3.24.1 +#### Date: February-03-2025 +##### Fix: + - Added HTTP error codes in the findOne method + +### Version: 3.24.0 +#### Date: January-27-2025 +##### Enhancement: + - updateasseturl for handling jrte within blocks + - version bumps + - Fixed testcases ### Version: 3.23.0 #### Date: December-05-2024 diff --git a/README.md b/README.md index 0e7ef966..2953f303 100755 --- a/README.md +++ b/README.md @@ -281,8 +281,7 @@ data.then(function(sync_data, err) { ##### Advanced sync queries -You can use advanced sync queries to fetch custom results while performing initial sync. -[Read advanced sync queries documentation](https://www.contentstack.com/docs/guide/synchronization/using-the-sync-api-with-javascript-sdk#advanced-sync-queries) +[Read advanced sync queries documentation](https://www.contentstack.com/docs/developers/use-the-sync-apis-with-sdk/use-sync-api-with-javascript-sdk#advanced-sync-queries) ### Helpful Links @@ -292,7 +291,7 @@ You can use advanced sync queries to fetch custom results while performing initi ### The MIT License (MIT) -Copyright © 2012-2024 [Contentstack](https://www.contentstack.com). All Rights Reserved +Copyright © 2012-2025 [Contentstack](https://www.contentstack.com). All Rights Reserved Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/index.d.ts b/index.d.ts index 73132162..a829b303 100644 --- a/index.d.ts +++ b/index.d.ts @@ -151,7 +151,7 @@ export class Stack { clearByContentType(): Stack; clearAll(): Stack; getCacheProvider(): object; - getLastActivities(): Promise;; + getLastActivities(): Promise; getContentTypes(param?: object): Promise; sync(params: object): Promise; imageTransform(url: string, params: any): string; diff --git a/package-lock.json b/package-lock.json index 4c44965e..ae9bfbac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,15 @@ { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.1", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", - "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", @@ -31,7 +30,9 @@ "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", + "jquery": "^3.7.1", "jsdoc": "^4.0.4", + "jsdom": "^26.0.0", "jshint": "^2.13.6", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", @@ -68,6 +69,27 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz", + "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -94,22 +116,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", + "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", + "@babel/helpers": "^7.26.7", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/traverse": "^7.26.7", + "@babel/types": "^7.26.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -393,27 +415,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", + "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", - "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", + "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.5" + "@babel/types": "^7.26.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -1546,13 +1568,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1629,15 +1651,15 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", + "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/compat-data": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", @@ -1651,7 +1673,7 @@ "@babel/plugin-transform-arrow-functions": "^7.25.9", "@babel/plugin-transform-async-generator-functions": "^7.25.9", "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", @@ -1662,7 +1684,7 @@ "@babel/plugin-transform-duplicate-keys": "^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-for-of": "^7.25.9", "@babel/plugin-transform-function-name": "^7.25.9", @@ -1671,12 +1693,12 @@ "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", @@ -1693,7 +1715,7 @@ "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", @@ -1728,9 +1750,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", + "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1756,17 +1778,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", - "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", + "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.5", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/types": "^7.26.5", + "@babel/types": "^7.26.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1775,9 +1797,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", - "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", + "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", "dev": true, "license": "MIT", "dependencies": { @@ -1796,11 +1818,126 @@ "license": "MIT" }, "node_modules/@contentstack/utils": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.15.tgz", - "integrity": "sha512-m/FNx8LwSquMWo+KQ+zyBALEQTeFuldpLkqTrWXPEtmkPMCNnrF3aLcYHmcpLs7B1nux3wPRD6njhMDUU57giQ==", + "version": "1.3.16", + "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.16.tgz", + "integrity": "sha512-HfVEwh7Da8xV4iZth/ci5bcOqszTx/U2mOzsWbyjHLeOfiU9U7uj6DefrrAPhNhL7JgCq/EpRd3vFtaxiEHBlA==", "license": "MIT" }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", + "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", + "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", @@ -2560,12 +2697,13 @@ "license": "MIT" }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", - "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", + "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", "dev": true, "license": "MIT", "dependencies": { + "@types/ms": "*", "@types/node": "*" } }, @@ -2601,10 +2739,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { - "version": "22.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", - "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "version": "22.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", + "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "dev": true, "license": "MIT", "dependencies": { @@ -2626,9 +2771,9 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", + "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", "dev": true, "license": "MIT", "dependencies": { @@ -3121,6 +3266,16 @@ "dev": true, "license": "MIT" }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3481,12 +3636,6 @@ "node": ">= 0.6" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3660,9 +3809,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001692", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", - "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", + "version": "1.0.30001696", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", + "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", "dev": true, "funding": [ { @@ -3730,48 +3879,6 @@ "node": "*" } }, - "node_modules/cheerio": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", - "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "encoding-sniffer": "^0.2.0", - "htmlparser2": "^9.1.0", - "parse5": "^7.1.2", - "parse5-htmlparser2-tree-adapter": "^7.0.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^6.19.5", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=18.17" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -4172,32 +4279,69 @@ "node": "*" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "license": "BSD-2-Clause", + "node_modules/cssstyle": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", + "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", + "dev": true, + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "@asamuzakjp/css-color": "^2.8.2", + "rrweb-cssom": "^0.8.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=18" } }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, "license": "BSD-2-Clause", "engines": { - "node": ">= 6" + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=18" } }, "node_modules/data-view-buffer": { @@ -4278,6 +4422,13 @@ } } }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "dev": true, + "license": "MIT" + }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -4470,61 +4621,6 @@ "node": ">= 10.14.2" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, "node_modules/dotenv": { "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", @@ -4606,9 +4702,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.83", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", - "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", + "version": "1.5.90", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", + "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", "dev": true, "license": "ISC" }, @@ -4652,19 +4748,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding-sniffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", - "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, "node_modules/enhanced-resolve": { "version": "5.18.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", @@ -4683,6 +4766,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -5196,9 +5280,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", - "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, "funding": [ { @@ -5233,9 +5317,9 @@ } }, "node_modules/fetch-mock": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.0.tgz", - "integrity": "sha512-XjgxM582kB0SzPOqH2UdGTwSqga8A8aBPjxcYr0wTeOlCWpZoK6zBrPzltECUTu6Zt3VTWafmKF599LN9BRN5Q==", + "version": "12.2.1", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.1.tgz", + "integrity": "sha512-ZUEDYDCr/qeZ3paYVyt6VkmuV/3HhZFVsih1Mt8hAAT34Gsc6HUv2qaFd5nh82BMhOaFjYL2yZbYi5VMuIhXKw==", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", @@ -5470,13 +5554,19 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", + "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/form-data": { @@ -5907,6 +5997,19 @@ "dev": true, "license": "MIT" }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -5914,25 +6017,6 @@ "dev": true, "license": "MIT" }, - "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" - } - }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -5964,6 +6048,20 @@ "node": ">= 14" } }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -5978,6 +6076,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -6126,12 +6225,13 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", - "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { + "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", @@ -6415,6 +6515,13 @@ "node": ">=0.10.0" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -6660,9 +6767,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -7536,9 +7643,9 @@ "license": "MIT" }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -7684,6 +7791,13 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "dev": true, + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7759,6 +7873,84 @@ "node": ">=12.0.0" } }, + "node_modules/jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -7996,9 +8188,9 @@ } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -8210,6 +8402,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "dev": true, "license": "MIT" }, @@ -8289,9 +8482,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -8671,9 +8864,9 @@ } }, "node_modules/nodemailer": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.16.tgz", - "integrity": "sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.0.tgz", + "integrity": "sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==", "dev": true, "license": "MIT-0", "engines": { @@ -8703,17 +8896,12 @@ "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } + "node_modules/nwsapi": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", @@ -9009,6 +9197,7 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, "license": "MIT", "dependencies": { "entities": "^4.5.0" @@ -9017,31 +9206,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -9840,6 +10004,13 @@ "node": ">= 0.10" } }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -9939,8 +10110,22 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/schema-utils": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", @@ -10598,6 +10783,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, "node_modules/tap-html": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tap-html/-/tap-html-1.1.0.tgz", @@ -10930,6 +11122,26 @@ "readable-stream": "3" } }, + "node_modules/tldts": { + "version": "6.1.75", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.75.tgz", + "integrity": "sha512-+lFzEXhpl7JXgWYaXcB6DqTYXbUArvrWAE/5ioq/X3CdWLbDjpPP4XTrQBmEJ91y3xbe4Fkw7Lxv4P3GWeJaNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.75" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.75", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.75.tgz", + "integrity": "sha512-AOvV5YYIAFFBfransBzSTyztkc3IMfz5Eq3YluaRiEu55nn43Fzaufx70UqEKYr8BoLCach4q8g/bg6e5+/aFw==", + "dev": true, + "license": "MIT" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -10960,6 +11172,19 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", + "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -11020,9 +11245,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -11225,15 +11450,6 @@ "dev": true, "license": "MIT" }, - "node_modules/undici": { - "version": "6.21.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", - "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -11388,6 +11604,19 @@ "node": ">= 0.8" } }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -11657,6 +11886,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" @@ -11669,6 +11899,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -11877,6 +12108,23 @@ } } }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", diff --git a/package.json b/package.json index 94e20ac5..a33de628 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.24.0", + "version": "3.24.1", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { @@ -80,7 +80,9 @@ "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", "jsdoc": "^4.0.4", + "jsdom": "^26.0.0", "jshint": "^2.13.6", + "jquery": "^3.7.1", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", "nodemailer": "^6.9.16", @@ -100,10 +102,9 @@ }, "dependencies": { "@contentstack/utils": "^1.3.15", - "cheerio": "^1.0.0", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", "qs": "^6.14.0" } -} +} \ No newline at end of file diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index a178d498..7c124c83 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -1,6 +1,6 @@ const fs = require("fs"); +const { JSDOM } = require("jsdom"); const dotenv = require("dotenv"); -const cheerio = require("cheerio"); dotenv.config(); @@ -10,7 +10,8 @@ const user3 = process.env.USER3; const user4 = process.env.USER4; const tapHtmlContent = fs.readFileSync("./tap-html.html", "utf8"); -const $ = cheerio.load(tapHtmlContent); +const dom = new JSDOM(tapHtmlContent); +const $ = require("jquery")(dom.window); const totalCount = $(".nav a:nth-child(2)") .text() diff --git a/sanity-report.js b/sanity-report.js index dd962f11..38810001 100644 --- a/sanity-report.js +++ b/sanity-report.js @@ -1,12 +1,13 @@ const fs = require('fs'); const { App } = require('@slack/bolt'); +const { JSDOM } = require("jsdom"); const dotenv = require('dotenv') dotenv.config() -const cheerio = require('cheerio'); const tapHtmlContent = fs.readFileSync('./tap-html.html', 'utf8'); const report = `./tap-html.html` -const $ = cheerio.load(tapHtmlContent); +const dom = new JSDOM(tapHtmlContent); +const $ = require("jquery")(dom.window); const totalTime = $('.nav a:nth-child(1)').text().trim().replace('Total Time', ''); const totalCount = $('.nav a:nth-child(2)').text().trim().replace('Total Count', ''); diff --git a/src/core/contentstack.js b/src/core/contentstack.js index 20a06eff..89e74a1d 100755 --- a/src/core/contentstack.js +++ b/src/core/contentstack.js @@ -3,12 +3,10 @@ import CacheProvider from './cache-provider/index'; import ContentstackRegion from "./contentstackregion"; /** - * @class - Contentstack -* @description Creates an instance of `Contentstack`. -* @instance -*/ - + * @class Contentstack + * @description Creates an instance of `Contentstack`. + * @instance + */ class Contentstack { constructor(){ @@ -45,8 +43,8 @@ class Contentstack { // Iterate through each object in _embedded_items and update the asset link for (let key in entry._embedded_items) { let embedded_item = entry._embedded_items[key]; - if (Array.isArray(embedded_item)) { + if (Array.isArray(embedded_item)) { embedded_item.forEach((item) => { if (item._content_type_uid == 'sys_assets' && item.filename) { @@ -62,14 +60,24 @@ class Contentstack { return; } } - } - let _entry = {...entry}; + }; + + let _entry = { ...entry }; const keys = key.split("."); + const unsafeKeys = new Set(["__proto__", "constructor", "prototype"]); + for (const k of keys) { - if (_entry[k]) _entry = _entry[k]; - else if (_entry.length) { + // Ensure key is safe before accessing it + if (unsafeKeys.has(k)) continue; + + if (_entry && typeof _entry === "object" && _entry !== null && Object.prototype.hasOwnProperty.call(_entry, k)) { + const newEntry = _entry[k]; + if (typeof newEntry === "object" && newEntry !== null) { + _entry = newEntry; + } + } else if (Array.isArray(_entry)) { for (const block of _entry) { - if (block[k]) { + if (block && typeof block === "object" && Object.prototype.hasOwnProperty.call(block, k)) { _entry = block[k]; } } diff --git a/src/core/lib/utils.js b/src/core/lib/utils.js index 121fb413..05af3cd1 100755 --- a/src/core/lib/utils.js +++ b/src/core/lib/utils.js @@ -252,19 +252,20 @@ export function sendRequest(queryObject, options) { } } - let getCacheCallback = function() { + let getCacheCallback = function(resolve, reject) { return function(err, entries) { - return new Promise(function(resolve, reject) { - try { - if (err) reject(err); - if (!tojson) entries = resultWrapper(entries); - resolve(spreadResult(entries)); - } catch (e) { - reject(e) + try { + if (err) { + return reject(err); // Propagate the error to the parent promise } - }); - } - } + if (!tojson) entries = resultWrapper(entries); + resolve(spreadResult(entries)); // Propagate the result to the parent promise + } catch (e) { + reject(e); // Handle any synchronous errors + } + }; + }; + let callback = function(continueFlag, resolve, reject) { if (continueFlag) { @@ -291,7 +292,7 @@ export function sendRequest(queryObject, options) { if (err || !_data || (_data.entries.length === 0 && _data.assets.length === 0)) { return reject({ error_code: 141, error_message: 'The requested entry doesn\'t exist.' }); } - getCacheCallback()(err, _data); + getCacheCallback(resolve, reject)(err, _data); }); return } else { @@ -338,12 +339,14 @@ export function sendRequest(queryObject, options) { } }.bind(self)) .catch(function(error) { - if (cachePolicy === 2 && self.provider !== null) { - self.provider.get(hashQuery, getCacheCallback()); - } else { - return reject(error); + if(error){ + reject(error); } + else if (cachePolicy === 2 && self.provider !== null) { + self.provider.get(hashQuery, getCacheCallback(resolve, reject)); + } }); + } } switch (cachePolicy) { From 32adf6ba91f3149efb637d724de7907d8a71558d Mon Sep 17 00:00:00 2001 From: Vikram Kalta Date: Wed, 5 Feb 2025 19:45:59 +0000 Subject: [PATCH 36/76] fix: update registry url --- .github/workflows/npm-publish.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index bd037be8..d2c38198 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -28,7 +28,8 @@ jobs: node-version: '20.x' registry-url: 'https://npm.pkg.github.com' scope: '@contentstack' - - run: npm ci - - run: npm publish env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.PAT_TOKEN }} + - run: echo "//npm.pkg.github.com/:_authToken=${{ secrets.PAT_TOKEN }}" > ~/.npmrc + - run: npm ci --registry=https://npm.pkg.github.com + - run: npm publish --registry=https://npm.pkg.github.com From 8cb04b66d199b80f81adb95e48c02c0812fb46fc Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Thu, 6 Feb 2025 12:07:42 +0530 Subject: [PATCH 37/76] Update node version to 22 --- .github/workflows/npm-publish.yml | 4 +- package-lock.json | 459 ++---------------------------- package.json | 8 +- 3 files changed, 28 insertions(+), 443 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 88017fe3..0e6d0d57 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '20.x' + node-version: '22.x' registry-url: 'https://registry.npmjs.org' - run: npm ci - run: npm publish @@ -25,7 +25,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '20.x' + node-version: '22.x' registry-url: 'https://npm.pkg.github.com' scope: '@contentstack' - run: npm ci diff --git a/package-lock.json b/package-lock.json index ae9bfbac..8ac36496 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,16 @@ { "name": "contentstack", - "version": "3.24.1", + "version": "3.24.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.24.1", + "version": "3.24.2", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", + "@fetch-mock/jest": "^0.2.10", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", @@ -26,7 +27,6 @@ "compression-webpack-plugin": "^11.1.0", "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", - "fetch-mock-jest": "^1.5.1", "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", @@ -59,7 +59,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -94,7 +93,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", @@ -109,7 +107,6 @@ "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -119,7 +116,6 @@ "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", - "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -150,7 +146,6 @@ "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.26.5", @@ -180,7 +175,6 @@ "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.26.5", @@ -268,7 +262,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.9", @@ -282,7 +275,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", @@ -313,7 +305,6 @@ "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -373,7 +364,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -383,7 +373,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -393,7 +382,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -418,7 +406,6 @@ "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", - "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.25.9", @@ -432,7 +419,6 @@ "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.26.7" @@ -545,7 +531,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -558,7 +543,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -571,7 +555,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" @@ -584,7 +567,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -616,7 +598,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" @@ -632,7 +613,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -645,7 +625,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -658,7 +637,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" @@ -674,7 +652,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -687,7 +664,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -700,7 +676,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -713,7 +688,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -726,7 +700,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -739,7 +712,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -752,7 +724,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -768,7 +739,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -784,7 +754,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" @@ -1766,7 +1735,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.25.9", @@ -1781,7 +1749,6 @@ "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", @@ -1800,7 +1767,6 @@ "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -1814,7 +1780,6 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, "license": "MIT" }, "node_modules/@contentstack/utils": { @@ -1948,11 +1913,26 @@ "node": ">=14.17.0" } }, + "node_modules/@fetch-mock/jest": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@fetch-mock/jest/-/jest-0.2.10.tgz", + "integrity": "sha512-nBZUUrYhuCzzmCx0jmGTZOfENf7IhmyYG89WMquHlCkqYSXBJT5PldFg+P107QZcShQPUmqxyLzGHdmsL7mmJw==", + "license": "MIT", + "dependencies": { + "fetch-mock": "^12.3.0" + }, + "engines": { + "node": ">=18.11.0" + }, + "peerDependencies": { + "@jest/globals": "*", + "jest": "*" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, "license": "ISC", "dependencies": { "camelcase": "^5.3.1", @@ -1969,7 +1949,6 @@ "version": "0.1.3", "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" @@ -1979,7 +1958,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -1997,7 +1975,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2045,7 +2022,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2058,7 +2034,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2073,14 +2048,12 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -2096,7 +2069,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -2110,7 +2082,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -2123,7 +2094,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2141,7 +2111,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -2157,7 +2126,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -2201,7 +2169,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -2214,7 +2181,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -2229,7 +2195,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -2245,7 +2210,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -2261,7 +2225,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -2288,7 +2251,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -2306,7 +2268,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -2321,7 +2282,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2331,7 +2291,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2352,14 +2311,12 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -2416,14 +2373,12 @@ "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -2433,7 +2388,6 @@ "version": "10.3.0", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -2554,7 +2508,6 @@ "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", @@ -2568,7 +2521,6 @@ "version": "7.6.8", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" @@ -2578,7 +2530,6 @@ "version": "7.4.4", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", @@ -2589,7 +2540,6 @@ "version": "7.20.6", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" @@ -2645,7 +2595,6 @@ "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -2655,14 +2604,12 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" @@ -2672,7 +2619,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" @@ -2750,7 +2696,6 @@ "version": "22.12.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -2767,7 +2712,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, "license": "MIT" }, "node_modules/@types/ws": { @@ -2784,7 +2728,6 @@ "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -2794,7 +2737,6 @@ "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/ast": { @@ -3118,7 +3060,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -3134,7 +3075,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3144,7 +3084,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3160,7 +3099,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -3174,7 +3112,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" @@ -3315,7 +3252,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -3355,7 +3291,6 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3372,7 +3307,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", @@ -3389,7 +3323,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -3447,7 +3380,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -3474,7 +3406,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -3491,7 +3422,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, "license": "MIT" }, "node_modules/base62": { @@ -3640,7 +3570,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -3651,7 +3580,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -3664,7 +3592,6 @@ "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3710,7 +3637,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" @@ -3727,7 +3653,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, "license": "MIT" }, "node_modules/bytes": { @@ -3792,7 +3717,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3802,7 +3726,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3812,7 +3735,6 @@ "version": "1.0.30001696", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3846,7 +3768,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3863,7 +3784,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3893,7 +3813,6 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, "funding": [ { "type": "github", @@ -3909,7 +3828,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", - "dev": true, "license": "MIT" }, "node_modules/clean-webpack-plugin": { @@ -3946,7 +3864,6 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -3976,7 +3893,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -3987,14 +3903,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, "license": "MIT" }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4007,7 +3921,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/colorette": { @@ -4137,7 +4050,6 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, "license": "MIT" }, "node_modules/console-browserify": { @@ -4176,7 +4088,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, "license": "MIT" }, "node_modules/cookie": { @@ -4199,18 +4110,6 @@ "node": ">=6.6.0" } }, - "node_modules/core-js": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", - "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { "version": "3.40.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", @@ -4236,7 +4135,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4258,7 +4156,6 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -4408,7 +4305,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -4433,7 +4329,6 @@ "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -4469,7 +4364,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4594,7 +4488,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4705,14 +4598,12 @@ "version": "1.5.90", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", - "dev": true, "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4725,7 +4616,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/emojis-list": { @@ -4792,7 +4682,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -4986,7 +4875,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5003,7 +4891,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5134,7 +5021,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -5158,7 +5044,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -5167,7 +5052,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -5276,7 +5160,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, "license": "MIT" }, "node_modules/fast-uri": { @@ -5310,16 +5193,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "node_modules/fetch-mock": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.2.1.tgz", - "integrity": "sha512-ZUEDYDCr/qeZ3paYVyt6VkmuV/3HhZFVsih1Mt8hAAT34Gsc6HUv2qaFd5nh82BMhOaFjYL2yZbYi5VMuIhXKw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.3.0.tgz", + "integrity": "sha512-+ZHzLuzrKpP3u5PZo8ghFP1Kr3UJUTZ5PT/uQZtLv7UagDCVRt1bSzVg6MoTFdjQ0GXsx/crq2t0tGabkbH2yA==", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", @@ -5332,73 +5214,6 @@ "node": ">=18.11.0" } }, - "node_modules/fetch-mock-jest": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/fetch-mock-jest/-/fetch-mock-jest-1.5.1.tgz", - "integrity": "sha512-+utwzP8C+Pax1GSka3nFXILWMY3Er2L+s090FOgqVNrNCPp0fDqgXnAHAJf12PLHi0z4PhcTaZNTz8e7K3fjqQ==", - "deprecated": "Use https://www.npmjs.com/package/@fetch-mock/jest instead. The underlying version of fetch-mock will also need upgrading: see https://www.wheresrhys.co.uk/fetch-mock/docs/Usage/upgrade-guide", - "dev": true, - "license": "MIT", - "dependencies": { - "fetch-mock": "^9.11.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "charity", - "url": "https://www.justgiving.com/refugee-support-europe" - }, - "peerDependencies": { - "node-fetch": "*" - }, - "peerDependenciesMeta": { - "node-fetch": { - "optional": true - } - } - }, - "node_modules/fetch-mock-jest/node_modules/fetch-mock": { - "version": "9.11.0", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-9.11.0.tgz", - "integrity": "sha512-PG1XUv+x7iag5p/iNHD4/jdpxL9FtVSqRMUQhPab4hVDt80T1MH5ehzVrL2IdXO9Q2iBggArFvPqjUbHFuI58Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.0.0", - "@babel/runtime": "^7.0.0", - "core-js": "^3.0.0", - "debug": "^4.1.1", - "glob-to-regexp": "^0.4.0", - "is-subset": "^0.1.1", - "lodash.isequal": "^4.5.0", - "path-to-regexp": "^2.2.1", - "querystring": "^0.2.0", - "whatwg-url": "^6.5.0" - }, - "engines": { - "node": ">=4.0.0" - }, - "funding": { - "type": "charity", - "url": "https://www.justgiving.com/refugee-support-europe" - }, - "peerDependencies": { - "node-fetch": "*" - }, - "peerDependenciesMeta": { - "node-fetch": { - "optional": true - } - } - }, - "node_modules/fetch-mock-jest/node_modules/path-to-regexp": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", - "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==", - "dev": true, - "license": "MIT" - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -5436,7 +5251,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -5512,7 +5326,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -5646,7 +5459,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, "license": "ISC" }, "node_modules/function-bind": { @@ -5693,7 +5505,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -5703,7 +5514,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -5737,7 +5547,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -5760,7 +5569,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -5792,7 +5600,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -5819,7 +5626,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -5885,7 +5691,6 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, "license": "ISC" }, "node_modules/has": { @@ -5915,7 +5720,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6014,7 +5818,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, "license": "MIT" }, "node_modules/http-errors": { @@ -6066,7 +5869,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -6089,7 +5891,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -6109,7 +5910,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -6122,7 +5922,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -6133,7 +5932,6 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -6144,7 +5942,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, "license": "ISC" }, "node_modules/internal-slot": { @@ -6221,7 +6018,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -6301,7 +6097,6 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -6391,7 +6186,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6401,7 +6195,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6443,7 +6236,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -6579,7 +6371,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6605,13 +6396,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==", - "dev": true, - "license": "MIT" - }, "node_modules/is-subset-of": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/is-subset-of/-/is-subset-of-3.1.10.tgz", @@ -6726,7 +6510,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, "license": "ISC" }, "node_modules/isobject": { @@ -6743,7 +6526,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" @@ -6753,7 +6535,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -6770,7 +6551,6 @@ "version": "7.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6783,7 +6563,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -6798,7 +6577,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -6813,7 +6591,6 @@ "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -6846,7 +6623,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -6873,7 +6649,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -6888,7 +6663,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -6920,7 +6694,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -6933,7 +6706,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -6948,14 +6720,12 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -6989,7 +6759,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -7035,7 +6804,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -7048,7 +6816,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -7063,7 +6830,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/jest-diff": { @@ -7096,7 +6862,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -7109,7 +6874,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -7126,7 +6890,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -7139,7 +6902,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -7154,14 +6916,12 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -7179,7 +6939,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7189,7 +6948,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -7226,7 +6984,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -7240,7 +6997,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -7253,7 +7009,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -7268,14 +7023,12 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -7291,7 +7044,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -7304,7 +7056,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7314,7 +7065,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -7330,7 +7080,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -7345,14 +7094,12 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -7373,7 +7120,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -7386,7 +7132,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -7401,14 +7146,12 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -7423,7 +7166,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -7441,7 +7183,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7451,7 +7192,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -7472,7 +7212,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -7486,7 +7225,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -7519,7 +7257,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -7553,7 +7290,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -7585,7 +7321,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -7598,7 +7333,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7608,7 +7342,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -7624,7 +7357,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -7639,14 +7371,12 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -7659,7 +7389,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -7677,7 +7406,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -7695,7 +7423,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -7708,7 +7435,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -7721,7 +7447,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -7736,14 +7461,12 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, "license": "MIT" }, "node_modules/jest-watcher": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -7763,7 +7486,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -7779,7 +7501,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -7802,14 +7523,12 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -7823,7 +7542,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -7955,7 +7673,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -8121,7 +7838,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -8142,7 +7858,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -8290,7 +8005,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -8300,7 +8014,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -8310,7 +8023,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, "license": "MIT" }, "node_modules/linkify-it": { @@ -8361,7 +8073,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -8398,14 +8109,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", @@ -8448,18 +8151,10 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true, - "license": "MIT" - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -8469,7 +8164,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -8485,7 +8179,6 @@ "version": "7.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8505,7 +8198,6 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" @@ -8615,7 +8307,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, "license": "MIT" }, "node_modules/methods": { @@ -8632,7 +8323,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -8669,7 +8359,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -8685,7 +8374,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -8742,14 +8430,12 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, "license": "MIT" }, "node_modules/ndjson": { @@ -8840,14 +8526,12 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, "license": "MIT" }, "node_modules/node-request-interceptor": { @@ -8877,7 +8561,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8887,7 +8570,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -8990,7 +8672,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -9000,7 +8681,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -9062,7 +8742,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -9078,7 +8757,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -9091,7 +8769,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -9168,7 +8845,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -9178,7 +8854,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -9220,7 +8895,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9230,7 +8904,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9247,7 +8920,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9257,7 +8929,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, "license": "MIT" }, "node_modules/path-to-regexp": { @@ -9274,14 +8945,12 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -9327,7 +8996,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -9511,7 +9179,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, "license": "MIT", "dependencies": { "kleur": "^3.0.3", @@ -9574,7 +9241,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, "funding": [ { "type": "individual", @@ -9614,17 +9280,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -9881,7 +9536,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9911,7 +9565,6 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", @@ -9932,7 +9585,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -9945,7 +9597,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9955,7 +9606,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -10150,7 +9800,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -10312,7 +9961,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -10325,7 +9973,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10407,21 +10054,18 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10431,7 +10075,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -10441,7 +10084,6 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -10513,14 +10155,12 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, "license": "BSD-3-Clause" }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" @@ -10560,7 +10200,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, "license": "MIT", "dependencies": { "char-regex": "^1.0.2", @@ -10641,7 +10280,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -10715,7 +10353,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -10728,7 +10365,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10738,7 +10374,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -10748,7 +10383,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10761,7 +10395,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -10774,7 +10407,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -11094,7 +10726,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", @@ -11146,14 +10777,12 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -11185,16 +10814,6 @@ "node": ">=16" } }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/ts-jest": { "version": "29.2.5", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", @@ -11271,7 +10890,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11281,7 +10899,6 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -11454,7 +11071,6 @@ "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -11525,7 +11141,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -11583,7 +11198,6 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -11621,7 +11235,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" @@ -11641,13 +11254,6 @@ "node": ">=10.13.0" } }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/webpack": { "version": "5.97.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", @@ -11905,23 +11511,10 @@ "node": ">=18" } }, - "node_modules/whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -12051,7 +11644,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -12069,14 +11661,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -12146,7 +11736,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -12156,7 +11745,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, "license": "ISC" }, "node_modules/yaml": { @@ -12173,7 +11761,6 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -12192,7 +11779,6 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -12202,7 +11788,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" diff --git a/package.json b/package.json index a33de628..91d37598 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.24.1", + "version": "3.24.2", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { @@ -75,14 +75,13 @@ "compression-webpack-plugin": "^11.1.0", "dotenv": "^16.4.7", "es3ify-loader": "0.2.0", - "fetch-mock-jest": "^1.5.1", "http-proxy-agent": "^7.0.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", + "jquery": "^3.7.1", "jsdoc": "^4.0.4", "jsdom": "^26.0.0", "jshint": "^2.13.6", - "jquery": "^3.7.1", "minami": "^1.2.3", "node-request-interceptor": "^0.6.3", "nodemailer": "^6.9.16", @@ -102,9 +101,10 @@ }, "dependencies": { "@contentstack/utils": "^1.3.15", + "@fetch-mock/jest": "^0.2.10", "es6-promise": "^4.2.8", "fetch-mock": "^12.2.0", "localStorage": "1.0.4", "qs": "^6.14.0" } -} \ No newline at end of file +} From a7817c70fba083cdb6aa9861a8819eaa19740c31 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 11 Feb 2025 08:38:52 +0530 Subject: [PATCH 38/76] update sanity message --- sanity-report-dev11.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index 7c124c83..eea37a6d 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -56,7 +56,7 @@ if (totalFail > 0) { } const slackMessage = { - text: `Dev11, CDA SDK Full Sanity + text: `Dev11, SDK-CDA Sanity *Result:* ${resultMessage}. ${durationInMinutes}m ${durationInSeconds}s *Failed Tests:* ${totalFail} <${reportUrl}|View Report> From 4497a66eb6a5cccbd04aa93780ce3a3accaa4769 Mon Sep 17 00:00:00 2001 From: Nadeem Patwekar Date: Wed, 26 Feb 2025 14:07:50 +0530 Subject: [PATCH 39/76] fix: reset timeline preview variables when not found --- CHANGELOG.md | 5 +++++ package.json | 2 +- src/core/stack.js | 8 ++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec7c704c..66cdf0ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ ## Change log +### Version: 3.24.2 +#### Date: March-03-2025 +##### Fix: + - Reset Timeline Preview variables + ### Version: 3.24.1 #### Date: February-03-2025 ##### Fix: diff --git a/package.json b/package.json index 91d37598..cecc8176 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.24.2", + "version": "3.24.3", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { diff --git a/src/core/stack.js b/src/core/stack.js index 4b6036fd..599e1ff3 100755 --- a/src/core/stack.js +++ b/src/core/stack.js @@ -258,9 +258,13 @@ export default class Stack { } if (params.has('release_id')) { this.headers['release_id'] = params.get('release_id'); + } else { + delete this.headers['release_id']; } if (params.has('preview_timestamp')) { this.headers['preview_timestamp'] = params.get('preview_timestamp'); + } else { + delete this.headers['preview_timestamp']; } } } @@ -274,9 +278,13 @@ export default class Stack { if (query.hasOwnProperty('release_id')) { this.headers['release_id'] = query.release_id; + } else { + delete this.headers['release_id']; } if (query.hasOwnProperty('preview_timestamp')) { this.headers['preview_timestamp'] = query.preview_timestamp; + } else { + delete this.headers['preview_timestamp']; } } From 8286cd8932a8f506e1617bd9302696dbe47297b3 Mon Sep 17 00:00:00 2001 From: Nadeem Patwekar Date: Wed, 26 Feb 2025 16:12:52 +0530 Subject: [PATCH 40/76] chore: update changelog --- CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66cdf0ea..683b6cfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ ## Change log -### Version: 3.24.2 +### Version: 3.24.3 #### Date: March-03-2025 +##### Fix: + - Using Node v22 + - Fixed license and Semgrep issues + +### Version: 3.24.2 +#### Date: Feb-25-2025 ##### Fix: - Reset Timeline Preview variables From 28d341fc0a49e7a574ab2d07811d3f6a088644e5 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 26 Feb 2025 17:25:53 +0530 Subject: [PATCH 41/76] chore: update version to 3.24.3 in package-lock.json --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8ac36496..2357221b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.24.2", + "version": "3.24.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.24.2", + "version": "3.24.3", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", From 535375d6c170007e3860b26c72e35a7eec41f385 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Fri, 28 Feb 2025 16:47:43 +0530 Subject: [PATCH 42/76] feat: update version to 3.25.0 and add GCP-EU support --- CHANGELOG.md | 6 ++++++ index.d.ts | 1 + package-lock.json | 4 ++-- package.json | 2 +- src/core/contentstackregion.js | 1 + test/typescript/stack.test.ts | 28 ++++++++++++++++++++++++++++ 6 files changed, 39 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 683b6cfa..11beff0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ ## Change log + +### Version: 3.25.0 +#### Date: March-10-2025 +##### Fix: + - Added GCP-EU support + ### Version: 3.24.3 #### Date: March-03-2025 ##### Fix: diff --git a/index.d.ts b/index.d.ts index a829b303..b4df3b24 100644 --- a/index.d.ts +++ b/index.d.ts @@ -25,6 +25,7 @@ export enum Region { AZURE_NA = "azure-na", AZURE_EU = "azure-eu", GCP_NA = "gcp-na", + GCP_EU = "gcp-eu" } //Enum for Contentstack CachePolicy diff --git a/package-lock.json b/package-lock.json index 2357221b..c0de69ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.24.3", + "version": "3.25.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.24.3", + "version": "3.25.0", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", diff --git a/package.json b/package.json index cecc8176..c5d28589 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.24.3", + "version": "3.25.0", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { diff --git a/src/core/contentstackregion.js b/src/core/contentstackregion.js index 785fbe40..715dae01 100644 --- a/src/core/contentstackregion.js +++ b/src/core/contentstackregion.js @@ -4,6 +4,7 @@ const ContentstackRegion = { AZURE_NA: "azure-na", AZURE_EU: "azure-eu", GCP_NA: "gcp-na", + GCP_EU: "gcp-eu" }; export default ContentstackRegion; \ No newline at end of file diff --git a/test/typescript/stack.test.ts b/test/typescript/stack.test.ts index 1e54e703..50c00bfe 100644 --- a/test/typescript/stack.test.ts +++ b/test/typescript/stack.test.ts @@ -196,6 +196,34 @@ describe('Stack tests', () => { done(); }); + test('Stack initialization with Contentstack Config with fetchOptions, GCP-EU region test', done => { + const config : Contentstack.Config = { + api_key: 'api_key', + delivery_token: 'delivery_token', + environment: 'environment', + region: Contentstack.Region.GCP_EU, + fetchOptions:{ + timeout: 2000, + retryLimit: 4, + retryDelay: 40, + logHandler: () => { + + } + } + }; + const stack = Contentstack.Stack(config); + + expect(stack.cachePolicy).toEqual(Contentstack.CachePolicy.IGNORE_CACHE); + expect(stack.environment).toEqual('environment'); + expect(stack.config.host).toEqual('gcp-eu-cdn.contentstack.com'); + expect(stack.config.port).toEqual(443); + expect(stack.config.version).toEqual("v3"); + expect(stack.fetchOptions.timeout).toEqual(2000); + expect(stack.fetchOptions.retryLimit).toEqual(4); + expect(stack.fetchOptions.retryDelay).toEqual(40); + done(); + }); + test('Stack initialization with region EU test', done => { const stack = Contentstack.Stack('api_key', 'delivery_token', 'environment', Contentstack.Region.AZURE_NA); expect(stack.cachePolicy).toEqual(Contentstack.CachePolicy.IGNORE_CACHE); From 1e0166b65301721b559cb9c4064e04af27801ef0 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 11 Mar 2025 15:21:41 +0530 Subject: [PATCH 43/76] fix: validate parameters in sync method and ensure query parameters are properly encoded --- src/core/stack.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/core/stack.js b/src/core/stack.js index 599e1ff3..2b9ed88b 100755 --- a/src/core/stack.js +++ b/src/core/stack.js @@ -596,8 +596,21 @@ export default class Stack { */ sync(params, fetchOptions) { + if (params && typeof params !== "object") { + throw new Error("Invalid parameters: params must be an object."); + } this._query = {}; - this._query = Utils.mergeDeep(this._query, params); + + if (params) { + for (const key in params) { + if (params.hasOwnProperty(key)) { + if (typeof params[key] !== "string" && typeof params[key] !== "number") { + throw new Error(`Invalid parameter value for key "${key}": must be a string or number.`); + } + this._query[key] = params[key]; + } + } + } this.requestParams = { method: 'POST', headers: Utils.mergeDeep({}, this.headers), @@ -630,7 +643,9 @@ export default class Stack { if (url && typeof url === "string" && typeof params === "object" && params.length === undefined) { let queryParams = []; for (const operation in params) { - queryParams.push(operation + '=' + params[operation]); + const encodedKey = encodeURIComponent(operation); + const encodedValue = encodeURIComponent(params[operation]); + queryParams.push(encodedKey + '=' + encodedValue); } url += (url.indexOf("?") <= -1) ? "?" + queryParams.join('&') : "&" + queryParams.join('&'); } From c7393b05ae76bee2bdc46959460855aa3219bf77 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 20 Mar 2025 15:45:07 +0530 Subject: [PATCH 44/76] feat: add Jest configuration for testing environment and reporting --- jest.js.config.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 jest.js.config.js diff --git a/jest.js.config.js b/jest.js.config.js new file mode 100644 index 00000000..26212a05 --- /dev/null +++ b/jest.js.config.js @@ -0,0 +1,21 @@ +module.exports = { + testEnvironment: "node", + testMatch: ["**/test/**/*.js"], + testPathIgnorePatterns: [ + "/node_modules/", + "/test/index.js", + "/test/config.js", + "/test/sync_config.js", + "/test/.*/utils.js", + "/test/sync/", + ], + reporters: ["default", ["jest-html-reporters", + { + "filename": "tap-html.html", + "expand": true, + "inlineSource": true, + "includeFailureMsg": true, // Includes error messages in JSON + "includeConsoleLog": true + } + ]], +}; \ No newline at end of file From 6dddf32f13fdac9483fa38eebf0f416da0975d71 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 20 Mar 2025 15:46:21 +0530 Subject: [PATCH 45/76] refactor: improve test summary reporting in sanity-report.js --- sanity-report.js | 66 ++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/sanity-report.js b/sanity-report.js index 38810001..9a664f4d 100644 --- a/sanity-report.js +++ b/sanity-report.js @@ -2,42 +2,52 @@ const fs = require('fs'); const { App } = require('@slack/bolt'); const { JSDOM } = require("jsdom"); const dotenv = require('dotenv') +const path = require("path"); + dotenv.config() -const tapHtmlContent = fs.readFileSync('./tap-html.html', 'utf8'); -const report = `./tap-html.html` -const dom = new JSDOM(tapHtmlContent); -const $ = require("jquery")(dom.window); +const data = fs.readFileSync(path.join(__dirname, 'tap-html.html'), 'utf8'); +const dom = new JSDOM(data); +const report = './tap-html.html' +const textarea = dom.window.document.querySelector("#jest-html-reports-result-data"); +const testResults = JSON.parse(textarea.textContent.trim()); -const totalTime = $('.nav a:nth-child(1)').text().trim().replace('Total Time', ''); -const totalCount = $('.nav a:nth-child(2)').text().trim().replace('Total Count', ''); -const totalPass = $('.nav a:nth-child(3)').text().trim().replace('Total Pass', ''); -const totalFail = $('.nav a:nth-child(4)').text().trim().replace('Total Fail', ''); -const totalSkip = $('.nav a:nth-child(5)').text().trim().replace('Total Skip', ''); -const totalTodo = $('.nav a:nth-child(6)').text().trim().replace('Total Todo', ''); +const startTime = testResults.startTime; +const endTime = Math.max(...testResults.testResults.map(t => t.perfStats.end)); +const totalSeconds = (endTime - startTime) / 1000; +const minutes = Math.floor(totalSeconds / 60); +const seconds = (totalSeconds % 60).toFixed(2); +const duration = `${minutes}m ${seconds}s`; -const milliseconds = parseInt(totalTime.replace(/\D/g, ''), 10); -const totalSeconds = Math.floor(milliseconds / 1000); -const durationInMinutes = Math.floor(totalSeconds / 60); -const durationInSeconds = totalSeconds % 60; +const summary = { + totalSuites: testResults.numTotalTestSuites, + passedSuites: testResults.numPassedTestSuites, + failedSuites: testResults.numFailedTestSuites, + totalTests: testResults.numTotalTests, + passedTests: testResults.numPassedTests, + failedTests: testResults.numFailedTests, + skippedTests: testResults.numPendingTests + testResults.numTodoTests, + pendingTests: testResults.numPendingTests, + duration: duration, +}; -console.log('Total Test Suits:', '9') -console.log('Total Tests:', totalCount); -console.log('Total Pass:', totalPass); -console.log('Total Fail:', totalFail); -console.log('Total Skip:', totalSkip); -console.log('Total Pending:', totalTodo); -console.log('Total Duration:', `${durationInMinutes}m`,`${durationInSeconds.toFixed(2)}s`); +console.log('Total Test Suits:', summary.totalSuites) +console.log('Total Tests:', summary.totalTests); +console.log('Total Pass:', summary.passedTests); +console.log('Total Fail:', summary.failedTests); +console.log('Total Skip:', summary.skippedTests); +console.log('Total Pending:', summary.pendingTests); +console.log('Total Duration:', summary.duration); const slackMessage = ` *Test Summary of JS Delivery SDK* -• Total Test Suits: *9* -• Total Tests: *${totalCount}* -• Total Pass:: *${totalPass}* -• Total Fail: *${totalFail}* -• Total Skip:: *${totalSkip}* -• Total Pending: *${totalTodo}* -• Total Duration: *${durationInMinutes}m ${durationInSeconds}s* +• Total Test Suits: *${summary.totalSuites}* +• Total Tests: *${summary.totalTests}* +• Total Pass:: *${summary.passedTests}* +• Total Fail: *${summary.failedTests}* +• Total Skip:: *${summary.skippedTests}* +• Total Pending: *${summary.pendingTests}* +• Total Duration: *${duration}* ` const app = new App({ From 6fa302fd8db36cfa775223b7190b2fb937011a4e Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 20 Mar 2025 15:47:06 +0530 Subject: [PATCH 46/76] refactor: update tests to use jest and improve readability --- test/asset/find-result-wrapper.js | 1417 +++++----- test/asset/find.js | 1489 +++++------ test/asset/image-transformation.js | 221 +- test/asset/spread.js | 136 +- test/entry/find-result-wrapper.js | 2032 +++++++------- test/entry/find.js | 3356 ++++++++++++------------ test/entry/findone-result-wrapper.js | 1810 +++++++------ test/entry/findone.js | 1772 +++++++------ test/entry/spread.js | 403 +-- test/live-preview/live-preview-test.js | 135 +- 10 files changed, 6553 insertions(+), 6218 deletions(-) diff --git a/test/asset/find-result-wrapper.js b/test/asset/find-result-wrapper.js index bfcf8ad1..5662dd38 100755 --- a/test/asset/find-result-wrapper.js +++ b/test/asset/find-result-wrapper.js @@ -2,786 +2,653 @@ /* * Module Dependencies. */ -var test = require('tape'); -var Contentstack = require('../../dist/node/contentstack.js'); -var init = require('../config.js'); -var Utils = require('../entry/utils.js'); - -var Stack; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); - - -test('default .find() no fallback', function(assert) { - var _in = ['ja-jp'] - Stack.Assets().Query().language('ja-jp').toJSON().find() - .then((assets) => { - assert.ok(assets[0].length, 'Assets present in the resultset'); - assert.notok(assets[1], 'Count should not be present'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (_in.indexOf(asset['publish_details']['locale']) != -1); - }); - assert.equal(_assets, true, "Publish content fallback"); - } - assert.end(); - }).catch((error) => { - assert.fail("asset default .find() fallback catch", error.toString()); - assert.end(); - }) -}) -test('default .find() fallback', function(assert) { - var _in = ['ja-jp', 'en-us'] - Stack.Assets().Query().language('ja-jp').includeFallback().toJSON().find() - .then((assets) => { - assert.ok(assets[0].length, 'Assets present in the resultset'); - assert.notok(assets[1], 'Count should not be present'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (_in.indexOf(asset['publish_details']['locale']) != -1); - }); - assert.equal(_assets, true, "Publish content fallback"); - } - assert.end(); - }).catch((error) => { - assert.fail("asset default .find() fallback catch", error.toString()); - assert.end(); - }) -}) -test('default .find()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - Query - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.ok(!assets[1], 'Count should not present in the result'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - prev = asset[field]; - return (asset.updated_at <= prev); - }); - assert.equal(_assets, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail("default .find()"); - assert.end(); - }); -}); - -/*! - * SORTING - * !*/ -test('.ascending()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - - Query - .ascending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - prev = asset[field]; - return (asset[field] >= prev); - }); - assert.equal(_assets, true, "assets sorted ascending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".ascending()"); - assert.end(); - }); -}); - -test('.descending()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'created_at'; - - Query - .descending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - prev = asset[field]; - return (asset[field] >= prev); - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".descending()"); - assert.end(); - }); -}); - - -/*! - * COMPARISION - * !*/ -test('.lessThan()', function(assert) { - var Query = Stack.Assets().Query(), - value = 5122, - field = 'updated_at'; - Query - .lessThan('file_size', value) - .language('en-us') - .toJSON() - .find() - .then(function success(assets) { - // assert.ok("assets" in result, 'assets key present in the resultset'); - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 1, 'one asset present in the resultset') - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = true; - _assets = assets[0].slice(1).every(function(asset) { - var flag = (asset[field] < value); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".lessThan()"); - assert.end(); - }); -}); - -test('.lessThanOrEqualTo()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at', - value = 5122; - Query - .language('en-us') - .lessThanOrEqualTo('file_size', value) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 2, 'two assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".lessThanOrEqualTo()"); - assert.end(); - }); -}); - -test('.greaterThan()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'file_size', - value = 5122; - - Query - .greaterThan('file_size', value) - .ascending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 3, 'three assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].slice(1).every(function(asset) { - var flag = (asset[field] > value); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted ascending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".greaterThan()"); - assert.end(); - }); -}); - -test('.greaterThanOrEqualTo()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'file_size', - value = 5122; - - Query - .greaterThanOrEqualTo('file_size', value) - .descending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 4, 'four assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] >= value); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".greaterThanOrEqualTo()"); - assert.end(); - }); -}); - -test('.notEqualTo()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'file_size', - value = 5122; - - Query - .language('en-us') - .notEqualTo('file_size', value) - .descending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 4, 'four assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] != value); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notEqualTo()"); - assert.end(); - }); -}); - -/*! - * Array/Subset - * !*/ - -test('.containedIn()', function(assert) { - var Query = Stack.Assets().Query(), - _in = ["image1", "image2"], - field = 'updated_at'; - - Query - .containedIn('title', _in) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 2, 'two assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (_in.indexOf(asset['title']) != -1); - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".containedIn()"); - assert.end(); - }); -}); - -test('.notContainedIn()', function(assert) { - var Query = Stack.Assets().Query(), - _in = ["sourceddd1", "sourceddddd2"]; - - Query - .notContainedIn('title', _in) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'No asset present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notContainedIn()"); - assert.end(); - }); -}); - - -/*! - *Element(exists) - * !*/ - -test('.exists()', function(assert) { - var Query = Stack.Assets().Query(), - queryField = "is_dir", - field = 'updated_at'; - - Query - .language('en-us') - .exists(queryField) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets should not be present in the resultset'); - assert.equal(assets[0].length, 5, 'five assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".exists()"); - assert.end(); - }); -}); - -test('.notExists()', function(assert) { - var Query = Stack.Assets().Query(), - queryField = "is_dir", - field = 'updated_at'; - - Query - .notExists(queryField) - .toJSON() - .find() - .then(function success(assets) { - assert.notok(assets[0].length, 'No asset present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - return (asset[field] <= prev); - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notExists()"); - assert.end(); - }); -}); - - -// Pagination -test('.skip()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - - Query - .toJSON() - .find() - .then(function success(allassets) { - // assert.ok("assets" in allassets, 'assets key present in the resultset'); - Stack - .Assets() - .Query() - .skip(1) - .toJSON() - .find() - .then(function success(assets) { - // assert.ok("assets" in result, 'assets key present in the resultset'); - assert.ok((assets[0].length >= 2), '2 or more assets present in the resultset'); - assert.deepEqual(allassets[0].slice(1), assets[0], 'All elements matched.'); - if (assets && assets.length && assets[0].length) { - allassets[0] = allassets[0].slice(1); - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(""); - assert.end(); - }); - }, function error(err) { - console.error("error :", err); - assert.fail("skip()"); - assert.end(); - }); -}); - -test('.limit()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - - Query - .toJSON() - .find() - .then(function success(allassets) { - // assert.ok("assets" in allassets, 'assets key present in the resultset'); - Stack - .Assets() - .Query() - .limit(2) - .toJSON() - .find() - .then(function success(assets) { - // assert.ok("assets" in result, 'assets key present in the resultset'); - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.deepEqual(allassets[0].slice(0, 2), assets[0], 'All elements matched.'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".limit()"); - assert.end(); - }); - }, function error(err) { - console.error("error :", err); - assert.fail(".limit()"); - assert.end(); - }); -}); - -test('.count()', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .count() - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0], 'assets count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".count()"); - assert.end(); - }); -}); - - - -// Logical -test('.or() - Query Objects', function(assert) { - var Query1 = Stack.Assets().Query().containedIn('title', ['image1', 'image2']); - var Query2 = Stack.Assets().Query().where('is_dir', true); - var Query = Stack.Assets().Query(); - - Query - .or(Query1, Query2) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (~(asset.title === 'image1' || asset.is_dir === true)); - }); - assert.ok(_assets, '$OR condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".or() - Query Objects"); - assert.end(); - }); -}); - -test('.and() - Query Objects', function(assert) { - var Query1 = Stack.Assets().Query().where('title', 'image1'); - var Query2 = Stack.Assets().Query().where('is_dir', true); - var Query = Stack.Assets().Query(); - - Query - .and(Query1, Query2) - .toJSON() - .find() - .then(function success(assets) { - assert.notok(assets[0].length, 'asset not present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (~(asset.title === 'image1' && asset.is_dir === true)); - }); - assert.ok(_assets, '$AND condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".and() - Query Objects"); - assert.end(); - }); -}); - -test('.and() - Raw queries', function(assert) { - var Query1 = Stack.Assets().Query().where('title', 'image1'); - var Query2 = Stack.Assets().Query().where('is_dir', true); - var Query = Stack.Assets().Query(); - - Query - .and(Query1, Query2) - .toJSON() - .find() - .then(function success(assets) { - assert.notok(assets[0].length, 'asset not present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return ((asset.title === 'image1' && asset.is_dir === true)); - }); - assert.ok(_assets, '$AND condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".and() - Raw queries"); - assert.end(); - }); -}); - - -// Custom query -test('.query() - Raw query', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .query({ "$or": [{ "title": "image1" }, { "is_dir": "true" }] }) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 1, 'one asset present in resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (asset.title === 'image1' || asset.is_dir === true) - }); - assert.ok(_assets, '$OR condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".query() - Raw query"); - assert.end(); - }); -}); - -test('Non reference .tags() ', function(assert) { - var Query = Stack.Assets().Query(), - tags = ["asset3"]; - - Query - .tags(tags) - .toJSON() - .find() - .then(function success(assets) { - assert.ok((assets.length >= 1), '1 or more asset/assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - assert.equal(assets[0].length, 0, 'Non refernce tags count should be zero'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".tags()"); - assert.end(); - }); -}); - -// tags -test('.tags()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'tags', - tags = ["asset1", "asset2"]; - - Query - .tags(tags) - .toJSON() - .find() - .then(function success(assets) { - assert.ok((assets.length >= 1), '1 or more asset/assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (Utils.arrayPresentInArray(tags, asset[field])); - }); - assert.equal(_assets, true, 'Tags specified are found in result set'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".tags()"); - assert.end(); +const Contentstack = require('../../dist/node/contentstack.js'); +const init = require('../config.js'); +const Utils = require('../entry/utils.js'); + +let Stack; + +describe("Contentstack Asset Tests", () => { + // Initialize the Contentstack Stack Instance + beforeAll(() => { + return new Promise((resolve) => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(resolve, 1000); + }); + }); + + test('default .find() No fallback', async () => { + const _in = ['ja-jp']; + + try { + const assets = await Stack.Assets().Query().language('ja-jp').toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (_in.indexOf(asset['publish_details']['locale']) !== -1); }); -}); - - -// search -test('.search()', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .search('image1') - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, '1 or more asset present in the resultset'); - assert.equal(assets[0].length, 1, '1 asset present in resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".search()"); - assert.end(); + expect(_assets).toBe(true); + } + } catch (error) { + console.error("Error:", error); + fail("asset default .find() fallback catch: " + error.toString()); + } + }); + + test('default .find() fallback', async () => { + const _in = ['ja-jp', 'en-us']; + try { + const assets = await Stack.Assets().Query().language('ja-jp').includeFallback().toJSON().find(); + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (_in.indexOf(asset['publish_details']['locale']) !== -1); }); -}); - -// regex -test('.regex()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'title', - regex = { - pattern: '^image', - options: 'i' - }, - regexpObj = new RegExp(regex.pattern, regex.options); - - Query - .language('en-us') - .regex(field, regex.pattern, regex.options) - .toJSON() - .find() - .then(function success(assets) { - assert.ok((assets.length >= 1), '1 or more asset/assets present in the resultset'); - assert.equal(assets[0].length, 5, '5 assets present in resultset'); - var flag = assets[0].every(function(asset) { - return regexpObj.test(asset[field]); - }); - assert.ok(flag, "regexp satisfied for all the assets in the resultset"); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".regex()"); - assert.end(); + expect(_assets).toBe(true); + } + } catch (error) { + console.error("Error:", error); + fail("asset default .find() fallback catch: " + error.toString()); + } + }); + + test('default .find()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + try { + const assets = await Query.toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + prev = asset[field]; + return (asset[field] <= prev); }); -}); - - - -// includeCount -test('.includeCount()', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .includeCount() - .toJSON() - .find() - .then(function success(assets) { - // assert.ok("assets" in result, 'assets key present in the resultset'); - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.ok(assets[1], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".includeCount()"); - assert.end(); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail("asset default .find()"); + } + }); + + describe("sorting", () => { + test('.ascending()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at';try { + const assets = await Query.ascending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + prev = asset[field]; + return (asset[field] >= prev); + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".ascending()"); + } + }); + + test('.descending()', async () => { + const Query = Stack.Assets().Query(); + const field = 'created_at'; + try { + const assets = await Query.descending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".descending()"); + } + }); + }); + + test('.addParam()', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.addParam('include_dimension', 'true').toJSON().find(); + expect(assets[0][0].hasOwnProperty('dimension')).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".addParam()"); + } + }); + + describe("comparison", () => { + test('.lessThan()', async () => { + const Query = Stack.Assets().Query(); + const field = 'file_size'; + const value = 5122; + try { + const assets = await Query.lessThan('file_size', value).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].slice(1).every((asset) => { + const flag = (asset[field] < value); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".lessThan()"); + } + }); + + test('.lessThanOrEqualTo()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + try { + const assets = await Query.lessThanOrEqualTo('file_size', 5122).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".lessThanOrEqualTo()"); + } + }); + + test('.greaterThan()', async () => { + const Query = Stack.Assets().Query(); + const field = 'file_size'; + const value = 5122; + try { + const assets = await Query.greaterThan('file_size', value).ascending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].slice(1).every((asset) => { + const flag = (asset[field] > value); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + fail(".greaterThan()"); + } + }); + + test('.greaterThanOrEqualTo()', async () => { + const Query = Stack.Assets().Query(); + const field = 'file_size'; + const value = 5122; + try { + const assets = await Query.greaterThanOrEqualTo('file_size', 5122).descending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] >= value); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".greaterThanOrEqualTo()"); + } + }); + + test('.notEqualTo()', async () => { + const Query = Stack.Assets().Query(); + const field = 'file_size'; + const value = 5122; + try { + const assets = await Query.notEqualTo('file_size', value).descending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] != value); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".notEqualTo()"); + } + }); + + test('.where()', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.where('title', "image1").toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[0].length).toBe(1); + } catch (err) { + console.error("Error:", err); + fail(".where()"); + } + }); + + test('.equalTo() compare boolean value (true)', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.language('en-us').equalTo('is_dir', false).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[0].length).toBe(5); + } catch (err) { + console.error("Error:", err); + fail(".where()"); + } + }); + + test('.equalTo() compare boolean value (false)', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.equalTo('is_dir', true).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + expect(assets[0].length).toBe(0); + } catch (err) { + console.error("Error:", err); + fail(".where() boolean value having false"); + } + }); + }); + + describe("Array/Subset Tests", () => { + test('.containedIn()', async () => { + const Query = Stack.Assets().Query(); + const _in = ["image1", "image2"]; + const field = 'updated_at'; + try { + const assets = await Query.containedIn('title', _in).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (_in.indexOf(asset['title']) != -1); + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".containedIn()"); + } + }); + + test('.notContainedIn()', async () => { + const Query = Stack.Assets().Query(); + const _in = ["image1", "image2"]; + try { + const assets = await Query.notContainedIn('title', _in).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".notContainedIn()"); + } + }); + }); + + describe("Element Existence Tests", () => { + test('.exists()', async () => { + const Query = Stack.Assets().Query(); + const queryField = "is_dir"; + const field = 'updated_at'; + try { + const assets = await Query.exists(queryField).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".exists()"); + } + }); + + test('.notExists()', async () => { + const Query = Stack.Assets().Query(); + const queryField = "is_dir"; + const field = 'updated_at'; + try { + const assets = await Query.notExists(queryField).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + return (asset[field] <= prev); + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".notExists()"); + } + }); + }); + + describe("Pagination Tests", () => { + test('.skip()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + try { + const allassets = await Query.toJSON().find(); + const assets = await Stack.Assets().Query().skip(1).toJSON().find(); + + expect(assets[0].length >= 2).toBeTruthy(); + expect(allassets[0].slice(1)).toEqual(assets[0]); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".skip()"); + } + }); + + test('.limit()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + try { + const allassets = await Query.toJSON().find(); + const assets = await Stack.Assets().Query().limit(2).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(allassets[0].slice(0, 2)).toEqual(assets[0]); + + if (assets && assets.length && assets[0] && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".limit()"); + } + }); + + test('.count()', async () => { + const Query = Stack.Assets().Query(); + try { + const count = await Query.count().toJSON().find(); + expect(count).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".count()"); + } + }); + }); + + describe("Logical Operators Tests", () => { + test('.or() - Query Objects', async () => { + const Query1 = Stack.Assets().Query().where('title', 'image1'); + const Query2 = Stack.Assets().Query().where('is_dir', true); + const Query = Stack.Assets().Query(); + try { + const assets = await Query.or(Query1, Query2).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (~(asset.title === 'source1' || asset.is_dir === true)); + }); + expect(_assets).toBeTruthy(); + } + } catch (err) { + console.error("Error:", err); + fail(".or() - Query Objects"); + } + }); + + test('.and() - Query Objects', async () => { + const Query1 = Stack.Assets().Query().where('title', 'image1'); + const Query2 = Stack.Assets().Query().where('is_dir', true); + const Query = Stack.Assets().Query(); + try { + const assets = await Query.and(Query1, Query2).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (~(asset.title === 'image1' && asset.is_dir === true)); + }); + expect(_assets).toBeTruthy(); + } + } catch (err) { + console.error("Error:", err); + fail(".and() - Query Objects"); + } + }); + + test('.query() - Raw query', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.query({ "$or": [{ "title": "image2" }, { "is_dir": "true" }] }).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (asset.title === 'image2' || asset.is_dir === false) + }); + expect(_assets).toBeTruthy(); + } + } catch (err) { + console.error("Error:", err); + fail(".query() - Raw query"); + } + }); + }); + + describe("Tags Tests", () => { + test('.tags() - empty results', async () => { + const Query = Stack.Assets().Query(); + const tags = ["asset3"]; + try { + const assets = await Query.tags(tags).toJSON().find(); + + expect(assets.length >= 1).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + expect(assets[0].length).toBe(0); + } + } catch (err) { + console.error("Error:", err); + fail(".tags()"); + } + }); + + test('.tags() - with results', async () => { + const Query = Stack.Assets().Query(); + const field = 'tags'; + const tags = ["asset1", "asset2"]; + try { + const assets = await Query.tags(tags).toJSON().find(); + + expect(assets.length >= 1).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (Utils.arrayPresentInArray(tags, asset[field])); + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".tags()"); + } + }); + }); + + describe("Search Tests", () => { + test('.search()', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.toJSON().search('image1').find(); + expect(assets[0].length).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".search()"); + } + }); + + test('.regex()', async () => { + const Query = Stack.Assets().Query(); + const field = 'title'; + const regex = { + pattern: '^image', + options: 'i' + }; + const regexpObj = new RegExp(regex.pattern, regex.options); + try { + const assets = await Query.regex(field, regex.pattern, regex.options).toJSON().find(); + + expect(assets.length >= 1).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return regexpObj.test(asset[field]); }); -}); - -// only -test('.only() - Single String Parameter', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .only('title') - .toJSON() - .find() - .then(function success(assets) { - var flag = assets[0].every(function(asset) { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); - }); - assert.ok(flag, 'assets with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".only() - Single String Parameter"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".regex()"); + } + }); + }); + + describe("Include Options", () => { + test('.includeCount()', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.includeCount().toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".includeCount()"); + } + }); + }); + + describe("Field Projections", () => { + test('.only() - Single String Parameter', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.only('title').toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); }); -}); - -test('.only() - Multiple String Parameter', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .only('BASE', 'title') - .toJSON() - .find() - .then(function success(assets) { - var flag = assets[0].every(function(asset) { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); - }); - assert.ok(flag, 'assets with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".only() - Multiple String Parameter"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Single String Parameter"); + } + }); + + test('.only() - Multiple String Parameter', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.only('BASE', 'title').toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); }); -}); - -test('.only() - Array Parameter', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .only(['title', 'filename']) - .toJSON() - .find() - .then(function success(assets) { - var flag = assets[0].every(function(asset) { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "filename" in asset && "uid" in asset && 'url' in asset); - }); - assert.ok(flag, 'assets with the field title,url in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".only() - Array Parameter"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Multiple String Parameter"); + } + }); + + test('.only() - Array Parameter', async () => { + const Query = Stack.Assets().Query(); + try { + const assets = await Query.only(['title', 'filename']).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return (asset && Object.keys(asset).length === 5 && "title" in asset && "filename" in asset && "uid" in asset && "url" in asset); }); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Array Parameter"); + } + }); + }); }); \ No newline at end of file diff --git a/test/asset/find.js b/test/asset/find.js index 3acca3e9..5758917f 100755 --- a/test/asset/find.js +++ b/test/asset/find.js @@ -2,816 +2,691 @@ /* * Module Dependencies. */ -var test = require('tape'); -var Contentstack = require('../../dist/node/contentstack.js'); -var init = require('../config.js'); -var Utils = require('../entry/utils.js') -var Stack; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); - - -test('default .find() No fallback', function(assert) { - var _in = ['ja-jp'] - Stack.Assets().Query().language('ja-jp').toJSON().find() - .then((assets) => { - assert.ok(assets[0].length, 'Assets present in the resultset'); - assert.notok(assets[1], 'Count should not be present'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (_in.indexOf(asset['publish_details']['locale']) != -1); - }); - assert.equal(_assets, true, "Publish content fallback" ); - } - assert.end(); - }).catch((error) => { - assert.fail("asset default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -test('default .find() fallback', function(assert) { - var _in = ['ja-jp', 'en-us'] - Stack.Assets().Query().language('ja-jp').includeFallback().toJSON().find() - .then((assets) => { - assert.ok(assets[0].length, 'Assets present in the resultset'); - assert.notok(assets[1], 'Count should not be present'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (_in.indexOf(asset['publish_details']['locale']) != -1); - }); - assert.equal(_assets, true, "Publish content fallback" ); - } - assert.end(); - }).catch((error) => { - assert.fail("asset default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -test('default .find()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - Query - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'Assets present in the resultset'); - assert.notok(assets[1], 'Count should not be present'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - prev = asset[field]; - return (asset[field] <= prev); - }); - assert.equal(_assets, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail("asset default .find()"); - assert.end(); - }); -}); - -/*! - * SORTING - * !*/ -test('.ascending()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - - Query - .ascending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - prev = asset[field]; - return (asset[field] >= prev); - }); - assert.equal(_assets, true, "assets sorted ascending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".ascending()"); - assert.end(); - }); -}); - -test('.descending()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'created_at'; - Query - .descending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".descending()"); - assert.end(); - }); -}); - -// addparam -test('.addParam()', function(assert) { - var Query = Stack.Assets().Query(); - Query - .addParam('include_dimension', 'true') - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0][0].hasOwnProperty('dimension'), 'dimension present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".addParam()"); - assert.end(); - }); -}); - - -/*! - * COMPARISION - * !*/ -test('.lessThan()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'file_size', - value = 5122; - Query - .lessThan('file_size', value) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 1, '1 asset present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].slice(1).every(function(asset) { - var flag = (asset[field] < value); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error('Error : ', err); - assert.fail(".lessThan()"); - assert.end(); - }); -}); - -test('.lessThanOrEqualTo()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - Query - .lessThanOrEqualTo('file_size', 5122) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 2, 'two assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".lessThanOrEqualTo()"); - assert.end(); - }).catch(function(err) { - console.log("error is this: ", err); - }); -}); - -test('.greaterThan()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'file_size', - value = 5122; - - Query - .greaterThan('file_size', value) - .ascending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 3, 'three assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].slice(1).every(function(asset) { - var flag = (asset[field] > value); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted ascending on '" + field + "' field"); - } - assert.end(); - }, function error() { - assert.fail(".greaterThan()"); - assert.end(); - }); -}); - -test('.greaterThanOrEqualTo()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'file_size', - value = 5122; - - Query - .greaterThanOrEqualTo('file_size', 5122) - .descending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 4, 'four assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] >= value); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".greaterThanOrEqualTo()"); - assert.end(); - }); -}); - -test('.notEqualTo()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'file_size', - value = 5122; - - Query - .notEqualTo('file_size', value) - .descending(field) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] != value); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notEqualTo()"); - assert.end(); - }); -}); - -test('.where()', function(assert) { - var Query = Stack.Assets().Query(); - Query - .where('title', "image1") - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 1, 'one asset present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".where()"); - assert.end(); - }); -}); - - -test('.equalTo() compare boolean value (true)', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .language('en-us') - .equalTo('is_dir', false) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.equal(assets[0].length, 5, ' five asset present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".where()"); - assert.end(); - }); -}); - -test('.equalTo() compare boolean value (false)', function(assert) { - var Query = Stack.Assets().Query(); - Query - .equalTo('is_dir', true) - .toJSON() - .find() - .then(function success(assets) { - assert.notok(assets[0].length, 'assets not present in the resultset'); - assert.equal(assets[0].length, 0, ' three assets present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".where() boolean value having false"); - assert.end(); - }); -}); - -/*! - * Array/Subset - * !*/ - -test('.containedIn()', function(assert) { - var Query = Stack.Assets().Query(), - _in = ["image1", "image2"], - field = 'updated_at'; - - Query - .containedIn('title', _in) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.ok(assets[0].length, 2, 'two assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (_in.indexOf(asset['title']) != -1); - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".containedIn()"); - assert.end(); - }); -}); - -test('.notContainedIn()', function(assert) { - var Query = Stack.Assets().Query(), - _in = ["image1", "image2"]; - - Query - .notContainedIn('title', _in) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, ' Assets present in the resultset'); - assert.ok(assets[0].length, 3, 'three assets present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notContainedIn()"); - assert.end(); - }); -}); - - -/*! - *Element(exists) - * !*/ - -test('.exists()', function(assert) { - var Query = Stack.Assets().Query(), - queryField = "is_dir", - field = 'updated_at'; - - Query - .exists(queryField) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".exists()"); - assert.end(); - }); -}); - -test('.notExists()', function(assert) { - var Query = Stack.Assets().Query(), - queryField = "is_dir", - field = 'updated_at'; - - Query - .notExists(queryField) - .toJSON() - .find() - .then(function success(assets) { - assert.notok(assets[0].length, 'No asset present in the resultset'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - return (asset[field] <= prev); - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notExists()"); - assert.end(); - }); -}); - - -// Pagination -test('.skip()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - - Query - .toJSON() - .find() - .then(function success(allassets) { - Stack - .Assets() - .Query() - .skip(1) - .toJSON() - .find() - .then(function success(assets) { - assert.ok((assets[0].length >= 2), '2 or more assets present in the resultset'); - assert.deepEqual(allassets[0].slice(1), assets[0], 'All elements matched.'); - if (assets && assets.length && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".skip()"); - assert.end(); - }); - }, function error(err) { - console.error("error :", err); - assert.fail(".skip()"); - assert.end(); - }); -}); - -test('.limit()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - - Query - .toJSON() - .find() - .then(function success(allassets) { - Stack - .Assets() - .Query() - .limit(2) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.deepEqual(allassets[0].slice(0, 2), assets[0], 'All elements matched.'); - if (assets && assets.length && assets[0] && assets[0].length) { - var prev = assets[0][0][field]; - var _assets = assets[0].every(function(asset) { - var flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - assert.equal(_assets, true, "assets sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".limit()"); - assert.end(); - }); - }, function error(err) { - console.error("error :", err); - assert.fail(".limit()"); - assert.end(); - }); -}); - -test('.count()', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .count() - .toJSON() - .find() - .then(function success(count) { - // assert.ok("assets" in result, 'assets key present in the resultset'); - assert.ok(count, 'assets present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".count()"); - assert.end(); - }); -}); - - -// Logical -test('.or() - Query Objects', function(assert) { - var Query1 = Stack.Assets().Query().where('title', 'image1'); - var Query2 = Stack.Assets().Query().where('is_dir', true); - var Query = Stack.Assets().Query(); - - Query - .or(Query1, Query2) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.ok(assets[0].length, 1, 'one asset present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (~(asset.title === 'source1' || asset.is_dir === true)); - }); - assert.ok(_assets, '$OR condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".or() - Query Objects"); - assert.end(); - }); -}); - -test('.and() - Query Objects', function(assert) { - var Query1 = Stack.Assets().Query().where('title', 'image1'); - var Query2 = Stack.Assets().Query().where('is_dir', true); - var Query = Stack.Assets().Query(); - - Query - .and(Query1, Query2) - .toJSON() - .find() - .then(function success(assets) { - assert.notok(assets[0].length, ' asset not present in the resultset'); - if (assets && assets.length && assets[0].length) { - // console.log("\n\n\n\n",JSON.stringify(assets)); - var _assets = assets[0].every(function(asset) { - return (~(asset.title === 'image1' && asset.is_dir === true)); - }); - assert.ok(_assets, '$AND condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".and() - Query Objects"); - assert.end(); - }); -}); - -// Custom query -test('.query() - Raw query', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .query({ "$or": [{ "title": "image2" }, { "is_dir": "true" }] }) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.ok(assets[0].length, 1, 'one asset present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (asset.title === 'image2' || asset.is_dir === false) - }); - assert.ok(_assets, '$OR condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".query() - Raw query"); - assert.end(); - }); -}); - - -test('.tags()', function(assert) { - var Query = Stack.Assets().Query(), - tags = ["asset3"]; - - Query - .tags(tags) - .toJSON() - .find() - .then(function success(assets) { - assert.ok((assets.length >= 1), '1 or more asset/assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - assert.equal(assets[0].length, 0, 'Non refernce tags count should be zero'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".tags()"); - assert.end(); - }); -}); -// tags -test('.tags()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'tags', - tags = ["asset1", "asset2"]; - - Query - .tags(tags) - .toJSON() - .find() - .then(function success(assets) { - assert.ok((assets.length >= 1), '1 or more asset/assets present in the resultset'); - if (assets && assets.length && assets[0].length) { - var _assets = assets[0].every(function(asset) { - return (Utils.arrayPresentInArray(tags, asset[field])); - }); - assert.equal(_assets, true, 'Tags specified are found in result set'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".tags()"); - assert.end(); - }); -}); - - -// search -test('.search()', function(assert) { - var Query = Stack.Assets().Query(); - Query - .toJSON() - .search('image1') - .find() - .then(function success(assets) { - assert.ok(assets[0].length, '1 asset present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".search()"); - assert.end(); - }); -}); - -// regex -test('.regex()', function(assert) { - var Query = Stack.Assets().Query(), - field = 'title', - regex = { - pattern: '^image', - options: 'i' - }, - regexpObj = new RegExp(regex.pattern, regex.options); - - Query - .regex(field, regex.pattern, regex.options) - .toJSON() - .find() - .then(function success(assets) { - assert.ok((assets.length >= 1), '1 or more asset/assets present in the resultset'); - var flag = assets[0].every(function(asset) { - return regexpObj.test(asset[field]); - }); - assert.ok(flag, "regexp satisfied for all the assets in the resultset"); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".regex()"); - assert.end(); +const Contentstack = require('../../dist/node/contentstack.js'); +const init = require('../config.js'); +const Utils = require('../entry/utils.js'); + +let Stack; + +describe("Contentstack Asset Tests", () => { + // Initialize the Contentstack Stack Instance + beforeAll(() => { + return new Promise((resolve) => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(resolve, 1000); + }); + }); + + describe("Language and Fallback Tests", () => { + test('default .find() No fallback', async () => { + const _in = ['ja-jp']; + + try { + const assets = await Stack.Assets().Query().language('ja-jp').toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (_in.indexOf(asset['publish_details']['locale']) !== -1); + }); + expect(_assets).toBe(true); + } + } catch (error) { + console.error("Error:", error); + fail("asset default .find() fallback catch: " + error.toString()); + } + }); + + test('default .find() fallback', async () => { + const _in = ['ja-jp', 'en-us']; + + try { + const assets = await Stack.Assets().Query().language('ja-jp').includeFallback().toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (_in.indexOf(asset['publish_details']['locale']) !== -1); + }); + expect(_assets).toBe(true); + } + } catch (error) { + console.error("Error:", error); + fail("asset default .find() fallback catch: " + error.toString()); + } + }); + }); + + test('default .find()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + + try { + const assets = await Query.toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; }); -}); - - -// includeCount -test('.includeCount()', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .includeCount() - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - assert.ok(assets[1], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".includeCount()"); - assert.end(); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail("asset default .find()"); + } + }); + + describe("Sorting", () => { + test('.ascending()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + + try { + const assets = await Query.ascending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] >= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".ascending()"); + } + }); + + test('.descending()', async () => { + const Query = Stack.Assets().Query(); + const field = 'created_at'; + + try { + const assets = await Query.descending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".descending()"); + } + }); + }); + + describe("Params", () => { + test('.addParam()', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.addParam('include_dimension', 'true').toJSON().find(); + expect(assets[0][0].hasOwnProperty('dimension')).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".addParam()"); + } + }); + }); + + describe("Comparison", () => { + test('.lessThan()', async () => { + const Query = Stack.Assets().Query(); + const field = 'file_size'; + const value = 5122; + + try { + const assets = await Query.lessThan('file_size', value).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].slice(1).every((asset) => { + const flag = (asset[field] < value); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".lessThan()"); + } + }); + + test('.lessThanOrEqualTo()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + + try { + const assets = await Query.lessThanOrEqualTo('file_size', 5122).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".lessThanOrEqualTo()"); + } + }); + + test('.greaterThan()', async () => { + const Query = Stack.Assets().Query(); + const field = 'file_size'; + const value = 5122; + + try { + const assets = await Query.greaterThan('file_size', value).ascending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].slice(1).every((asset) => { + const flag = (asset[field] > value); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + fail(".greaterThan()"); + } + }); + + test('.greaterThanOrEqualTo()', async () => { + const Query = Stack.Assets().Query(); + const field = 'file_size'; + const value = 5122; + + try { + const assets = await Query.greaterThanOrEqualTo('file_size', value).descending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] >= value); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".greaterThanOrEqualTo()"); + } + }); + + test('.notEqualTo()', async () => { + const Query = Stack.Assets().Query(); + const field = 'file_size'; + const value = 5122; + + try { + const assets = await Query.notEqualTo('file_size', value).descending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] != value); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".notEqualTo()"); + } + }); + + test('.where()', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.where('title', "image1").toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[0].length).toBe(1); + } catch (err) { + console.error("Error:", err); + fail(".where()"); + } + }); + + test('.equalTo() compare boolean value (true)', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.language('en-us').equalTo('is_dir', false).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[0].length).toBe(5); + } catch (err) { + console.error("Error:", err); + fail(".where()"); + } + }); + + test('.equalTo() compare boolean value (false)', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.equalTo('is_dir', true).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + expect(assets[0].length).toBe(0); + } catch (err) { + console.error("Error:", err); + fail(".where() boolean value having false"); + } + }); + }); + + describe("Array/Subset Tests", () => { + test('.containedIn()', async () => { + const Query = Stack.Assets().Query(); + const _in = ["image1", "image2"]; + const field = 'updated_at'; + + try { + const assets = await Query.containedIn('title', _in).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (_in.indexOf(asset['title']) != -1); + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".containedIn()"); + } + }); + + test('.notContainedIn()', async () => { + const Query = Stack.Assets().Query(); + const _in = ["image1", "image2"]; + + try { + const assets = await Query.notContainedIn('title', _in).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".notContainedIn()"); + } + }); + }); + + describe("Element Existence Tests", () => { + test('.exists()', async () => { + const Query = Stack.Assets().Query(); + const queryField = "is_dir"; + const field = 'updated_at'; + + try { + const assets = await Query.exists(queryField).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".exists()"); + } + }); + + test('.notExists()', async () => { + const Query = Stack.Assets().Query(); + const queryField = "is_dir"; + const field = 'updated_at'; + + try { + const assets = await Query.notExists(queryField).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + return (asset[field] <= prev); + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".notExists()"); + } + }); + }); + + describe("Pagination Tests", () => { + test('.skip()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + + try { + const allassets = await Query.toJSON().find(); + const assets = await Stack.Assets().Query().skip(1).toJSON().find(); + + expect(assets[0].length >= 2).toBeTruthy(); + expect(allassets[0].slice(1)).toEqual(assets[0]); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".skip()"); + } + }); + + test('.limit()', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + + try { + const allassets = await Query.toJSON().find(); + const assets = await Stack.Assets().Query().limit(2).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(allassets[0].slice(0, 2)).toEqual(assets[0]); + + if (assets && assets.length && assets[0] && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = (asset[field] <= prev); + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".limit()"); + } + }); + + test('.count()', async () => { + const Query = Stack.Assets().Query(); + + try { + const count = await Query.count().toJSON().find(); + expect(count).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".count()"); + } + }); + }); + + describe("Logical Operators Tests", () => { + test('.or() - Query Objects', async () => { + const Query1 = Stack.Assets().Query().where('title', 'image1'); + const Query2 = Stack.Assets().Query().where('is_dir', true); + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.or(Query1, Query2).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (~(asset.title === 'source1' || asset.is_dir === true)); + }); + expect(_assets).toBeTruthy(); + } + } catch (err) { + console.error("Error:", err); + fail(".or() - Query Objects"); + } + }); + + test('.and() - Query Objects', async () => { + const Query1 = Stack.Assets().Query().where('title', 'image1'); + const Query2 = Stack.Assets().Query().where('is_dir', true); + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.and(Query1, Query2).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (~(asset.title === 'image1' && asset.is_dir === true)); + }); + expect(_assets).toBeTruthy(); + } + } catch (err) { + console.error("Error:", err); + fail(".and() - Query Objects"); + } + }); + + test('.query() - Raw query', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.query({ "$or": [{ "title": "image2" }, { "is_dir": "true" }] }).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (asset.title === 'image2' || asset.is_dir === false); + }); + expect(_assets).toBeTruthy(); + } + } catch (err) { + console.error("Error:", err); + fail(".query() - Raw query"); + } + }); + }); + + describe("Tags Tests", () => { + test('.tags() - empty results', async () => { + const Query = Stack.Assets().Query(); + const tags = ["asset3"]; + + try { + const assets = await Query.tags(tags).toJSON().find(); + + expect(assets.length >= 1).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + expect(assets[0].length).toBe(0); + } + } catch (err) { + console.error("Error:", err); + fail(".tags()"); + } + }); + + test('.tags() - with results', async () => { + const Query = Stack.Assets().Query(); + const field = 'tags'; + const tags = ["asset1", "asset2"]; + + try { + const assets = await Query.tags(tags).toJSON().find(); + + expect(assets.length >= 1).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return (Utils.arrayPresentInArray(tags, asset[field])); + }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail(".tags()"); + } + }); + }); + + describe("Search Tests", () => { + test('.search()', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.toJSON().search('image1').find(); + expect(assets[0].length).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".search()"); + } + }); + + test('.regex()', async () => { + const Query = Stack.Assets().Query(); + const field = 'title'; + const regex = { + pattern: '^image', + options: 'i' + }; + const regexpObj = new RegExp(regex.pattern, regex.options); + + try { + const assets = await Query.regex(field, regex.pattern, regex.options).toJSON().find(); + + expect(assets.length >= 1).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return regexpObj.test(asset[field]); }); -}); - - -// only -test('.only() - Single String Parameter', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .only('title') - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - var flag = assets[0].every(function(asset) { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); - }); - assert.ok(flag, 'assets with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".only() - Single String Parameter"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".regex()"); + } + }); + }); + + describe("Include Options", () => { + test('.includeCount()', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.includeCount().toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".includeCount()"); + } + }); + }); + + describe("Field Projections", () => { + test('.only() - Single String Parameter', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.only('title').toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); }); -}); - -test('.only() - Multiple String Parameter', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .only('BASE', 'title') - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - var flag = assets[0].every(function(asset) { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); - }); - assert.ok(flag, 'assets with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".only() - Multiple String Parameter"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Single String Parameter"); + } + }); + + test('.only() - Multiple String Parameter', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.only('BASE', 'title').toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); }); -}); - -test('.only() - Array Parameter', function(assert) { - var Query = Stack.Assets().Query(); - - Query - .only(['title', 'filename']) - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'assets present in the resultset'); - var flag = assets[0].every(function(asset) { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "filename" in asset && "uid" in asset && "url" in asset); - }); - assert.ok(flag, 'assets with the field title,filename in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".only() - Array Parameter"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Multiple String Parameter"); + } + }); + + test('.only() - Array Parameter', async () => { + const Query = Stack.Assets().Query(); + + try { + const assets = await Query.only(['title', 'filename']).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return (asset && Object.keys(asset).length === 5 && "title" in asset && "filename" in asset && "uid" in asset && "url" in asset); }); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Array Parameter"); + } + }); + }); }); \ No newline at end of file diff --git a/test/asset/image-transformation.js b/test/asset/image-transformation.js index bb761cae..87ac2861 100755 --- a/test/asset/image-transformation.js +++ b/test/asset/image-transformation.js @@ -2,7 +2,6 @@ /* * Module Dependencies. */ -const test = require('tape'); const Contentstack = require('../../dist/node/contentstack.js'); const init = require('./../config.js'); const Utils = require('./../entry/utils.js'); @@ -11,91 +10,145 @@ const Regexp = new RegExp('\\\?', 'g'); let Stack; let Asset; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); - -test('Get All Assets', function(assert) { - Stack - .Assets() - .Query() - .toJSON() - .find() - .then(function success(assets) { - assert.ok(assets[0].length, 'Assets present in the resultset'); - Asset = assets[0][0]; - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail("asset default .find()"); - assert.end(); - }); -}); - -test('Valid URL: single parameter testing', function(assert) { + +describe('Image Transformation Tests', () => { + // Setup - runs before all tests + beforeAll(done => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(done, 1000); + }); + + // Get assets for testing + describe('Get All Assets', () => { + beforeAll(async () => { + try { + const assets = await Stack.Assets().Query().toJSON().find(); + Asset = assets[0][0]; + } catch (error) { + console.error("error:", error); + throw new Error("Failed to get assets"); + } + }); + + test('Should have assets in the resultset', () => { + expect(Asset).toBeDefined(); + }); + }); + + describe('Valid URL: single parameter testing', () => { + let Image; const Params = { - quality: 50 - } - const URL = Asset['url']; - const Image = Stack.imageTransform(URL, Params); - console.log("URL : ", Image, Image.match(Regexp)); - assert.ok((Image.match(Regexp).length === 1), "Valid URL is generated"); - for (var key in Params) { - assert.ok((Image.indexOf('?' + key + '=' + Params[key]) !== -1), "Supplied parameter " + key + " found"); - } - assert.ok((Image.match(Regexp).length === 1), "Valid URL is generated"); - assert.end(); -}); - -test('Valid URL: multiple parameter testing', function(assert) { + quality: 50 + }; + + beforeAll(() => { + const URL = Asset['url']; + Image = Stack.imageTransform(URL, Params); + }); + + test('Should generate valid URL', () => { + expect(Image.match(Regexp).length).toBe(1); + }); + + test('Should include quality parameter', () => { + expect(Image.includes('?quality=50')).toBe(true); + }); + + test('Should verify URL is valid again', () => { + expect(Image.match(Regexp).length).toBe(1); + }); + }); + + describe('Valid URL: multiple parameter testing', () => { + let Image; const Params = { - quality: 50, - auto: 'webp', - format: 'jpg' - } - const URL = Asset['url']; - const Image = Stack.imageTransform(URL, Params); - assert.ok((Image.match(Regexp).length === 1), "Valid URL is generated"); - for (var key in Params) { - assert.ok((Image.indexOf(key + '=' + Params[key]) !== -1), "Supplied parameter " + key + " found"); - } - assert.ok((Image.match(Regexp).length === 1), "Valid URL is generated"); - assert.end(); -}); - -test('Invalid URL: single parameter testing', function(assert) { + quality: 50, + auto: 'webp', + format: 'jpg' + }; + + beforeAll(() => { + const URL = Asset['url']; + Image = Stack.imageTransform(URL, Params); + }); + + test('Should generate valid URL', () => { + expect(Image.match(Regexp).length).toBe(1); + }); + + test('Should include quality parameter', () => { + expect(Image.includes('quality=50')).toBe(true); + }); + + test('Should include auto parameter', () => { + expect(Image.includes('auto=webp')).toBe(true); + }); + + test('Should include format parameter', () => { + expect(Image.includes('format=jpg')).toBe(true); + }); + + test('Should verify URL is valid again', () => { + expect(Image.match(Regexp).length).toBe(1); + }); + }); + + describe('Invalid URL: single parameter testing', () => { + let Image; const Params = { - quality: 50 - } - const URL = Asset['url'] + '?'; - const Image = Stack.imageTransform(URL, Params); - assert.ok((Image.match(Regexp).length === 1), "Valid URL is generated"); - for (var key in Params) { - assert.ok((Image.indexOf(key + '=' + Params[key]) !== -1), "Supplied parameter " + key + " found"); - } - assert.ok((Image.match(Regexp).length === 1), "Valid URL is generated"); - assert.end(); -}); - -test('Invalid URL: multiple parameter testing', function(assert) { + quality: 50 + }; + + beforeAll(() => { + const URL = Asset['url'] + '?'; + Image = Stack.imageTransform(URL, Params); + }); + + test('Should generate valid URL', () => { + expect(Image.match(Regexp).length).toBe(1); + }); + + test('Should include quality parameter', () => { + expect(Image.includes('quality=50')).toBe(true); + }); + + test('Should verify URL is valid again', () => { + expect(Image.match(Regexp).length).toBe(1); + }); + }); + + describe('Invalid URL: multiple parameter testing', () => { + let Image; const Params = { - quality: 50, - auto: 'webp', - format: 'jpg' - } - const URL = Asset['url'] + '?'; - const Image = Stack.imageTransform(URL, Params); - assert.ok((Image.match(Regexp).length === 1), "Valid URL is generated"); - for (var key in Params) { - assert.ok((Image.indexOf(key + '=' + Params[key]) !== -1), "Supplied parameter " + key + " found"); - } - assert.ok((Image.match(Regexp).length === 1), "Valid URL is generated"); - assert.end(); + quality: 50, + auto: 'webp', + format: 'jpg' + }; + + beforeAll(() => { + const URL = Asset['url'] + '?'; + Image = Stack.imageTransform(URL, Params); + }); + + test('Should generate valid URL', () => { + expect(Image.match(Regexp).length).toBe(1); + }); + + test('Should include quality parameter', () => { + expect(Image.includes('quality=50')).toBe(true); + }); + + test('Should include auto parameter', () => { + expect(Image.includes('auto=webp')).toBe(true); + }); + + test('Should include format parameter', () => { + expect(Image.includes('format=jpg')).toBe(true); + }); + + test('Should verify URL is valid again', () => { + expect(Image.match(Regexp).length).toBe(1); + }); + }); }); \ No newline at end of file diff --git a/test/asset/spread.js b/test/asset/spread.js index a41067b8..e494eae2 100755 --- a/test/asset/spread.js +++ b/test/asset/spread.js @@ -5,91 +5,75 @@ /* * Module Dependencies. */ -var test = require('tape'); -var Contentstack = require('../../dist/node/contentstack.js'); -var init = require('../config.js'); +const Contentstack = require('../../dist/node/contentstack.js'); +const init = require('../config.js'); -var Stack; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); +let Stack; +describe("Contentstack Asset Tests", () => { + // Initialize the Contentstack Stack Instance + beforeAll(() => { + return new Promise((resolve) => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(resolve, 1000); + }); + }); -test('assets as first argument', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; + test('assets as first argument', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; - Query + try { + const result = await Query .limit(1) .toJSON() - .find() - .spread(function success(assets) { - assert.ok(assets.length, 'assets exists as first parameter'); - if (assets && assets.length) { - var prev = assets[0][field]; - var _assets = assets.every(function(asset) { - prev = asset[field]; - return (asset[field] <= prev); - }); - assert.equal(_assets, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.end(); - }); -}); - -test('with assets and count argument', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - Query - .includeCount() - .toJSON() - .find() - .spread(function success(assets, count) { - assert.ok(assets.length, 'assets exists as first parameter'); - assert.ok(count, 'Count exists as second parameter'); - if (assets && assets.length) { - var prev = assets[0][field]; - var _assets = assets.every(function(asset) { - prev = asset[field]; - return (asset[field] <= prev); - }); - assert.equal(_assets, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.end(); + .find(); + + const assets = result[0]; // Using array destructuring + + expect(assets.length).toBeTruthy(); + + if (assets && assets.length) { + let prev = assets[0][field]; + const _assets = assets.every((asset) => { + prev = asset[field]; + return (asset[field] <= prev); }); -}); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail("assets as first argument test failed"); + } + }); -test('with assets and count argument', function(assert) { - var Query = Stack.Assets().Query(), - field = 'updated_at'; - Query + test('with assets and count argument', async () => { + const Query = Stack.Assets().Query(); + const field = 'updated_at'; + + try { + const result = await Query .includeCount() .toJSON() - .find() - .spread(function success(assets, count) { - assert.ok(assets.length, 'assets exists as first parameter'); - assert.ok(count, 'Count exists as second parameter'); - if (assets && assets.length) { - var prev = assets[0][field]; - var _assets = assets.every(function(asset) { - prev = asset[field]; - return (asset[field] <= prev); - }); - assert.equal(_assets, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.end(); + .find(); + + const [assets, count] = result; // Using array destructuring + + expect(assets.length).toBeTruthy(); + expect(count).toBeTruthy(); + + if (assets && assets.length) { + let prev = assets[0][field]; + const _assets = assets.every((asset) => { + prev = asset[field]; + return (asset[field] <= prev); }); + expect(_assets).toBe(true); + } + } catch (err) { + console.error("Error:", err); + fail("with assets and count argument test failed"); + } + }); }); \ No newline at end of file diff --git a/test/entry/find-result-wrapper.js b/test/entry/find-result-wrapper.js index c6b553f2..531358a7 100755 --- a/test/entry/find-result-wrapper.js +++ b/test/entry/find-result-wrapper.js @@ -1,1130 +1,1038 @@ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const test = require('tape'); -const Contentstack = require('../../dist/node/contentstack.js'); -const init = require('../config.js'); -const Utils = require('./utils.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const init = require("../config.js"); +const Utils = require("./utils.js"); const contentTypes = init.contentTypes; let Stack; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - console.log(init.stack) - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); - -test('default .find()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - Query - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(!entries[1], 'Count should not present in the result'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - prev = entry[field]; - return (entry.updated_at <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail("default .find()"); - assert.end(); +let error = null; + +describe("ContentStack SDK Tests", () => { + // Initialize the Contentstack Stack Instance + beforeAll(() => { + return new Promise((resolve) => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(resolve, 1000); + }); + }); + + test("default .find()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "updated_at"; + + try { + const entries = await Query.toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + expect(entries[1]).toBeFalsy(); + + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + prev = entry[field]; + return entry.updated_at <= prev; }); -}); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail("default .find()"); + } + }); -/*! - * SORTING - * !*/ -test('.ascending()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - - Query - .ascending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - prev = entry[field]; - return (entry[field] >= prev); - }); - assert.equal(_entries, true, "entries sorted ascending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".ascending()"); - assert.end(); - }); -}); + describe("sorting", () => { + test(".ascending()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "updated_at"; -test('.descending()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'created_at'; - - Query - .descending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - prev = entry[field]; - return (entry[field] >= prev); - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".descending()"); - assert.end(); - }); -}); + try { + const entries = await Query.ascending(field).toJSON().find(); + expect(entries[0].length).toBeTruthy(); -/*! - * COMPARISION - * !*/ -test('.lessThan()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - value = 11, - field = 'updated_at'; - Query - .lessThan('num_field', value) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, '1 Entry present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = true; - _entries = entries[0].slice(1).every(function(entry) { - var flag = (entry[field] < value); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".lessThan()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + prev = entry[field]; + return entry[field] >= prev; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".ascending()"); + } + }); -test('.lessThanOrEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'updated_at', - value = 11; - Query - .lessThanOrEqualTo('num_field', value) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".lessThanOrEqualTo()"); - assert.end(); - }); -}); + test(".descending()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "created_at"; -test('.greaterThan()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - - Query - .greaterThan('num_field', value) - .ascending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].slice(1).every(function(entry) { - var flag = (entry[field] > value); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted ascending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".greaterThan()"); - assert.end(); - }); -}); + try { + const entries = await Query.descending(field).toJSON().find(); -test('.greaterThanOrEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - - Query - .greaterThanOrEqualTo('num_field', value) - .descending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] >= value); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".greaterThanOrEqualTo()"); - assert.end(); - }); -}); + expect(entries[0].length).toBeTruthy(); -test('.notEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 6; - - Query - .notEqualTo('num_field', value) - .descending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] != value); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notEqualTo()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + prev = entry[field]; + return entry[field] >= prev; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".descending()"); + } + }); + }); + + describe("comparison", () => { + test(".lessThan()", async () => { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + const value = 11; + const field = "updated_at"; + + try { + const entries = await Query.lessThan("num_field", value) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); -/*! - * Array/Subset - * !*/ - -test('.containedIn()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - _in = ["source1", "source2"], - field = 'updated_at'; - - Query - .containedIn('title', _in) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (_in.indexOf(entry['title']) != -1); - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".containedIn()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].slice(1).every(function (entry) { + const flag = entry[field] < value; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".lessThan()"); + } + }); + + test(".lessThanOrEqualTo()", async () => { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + const field = "updated_at"; + const value = 11; + + try { + const entries = await Query.lessThanOrEqualTo("num_field", value) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); -test('.notContainedIn()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - _in = ["sourceddd1", "sourceddddd2"]; - - Query - .notContainedIn('title', _in) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'No Entry present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notContainedIn()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".lessThanOrEqualTo()"); + } + }); + + test(".greaterThan()", async () => { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + const field = "num_field"; + const value = 11; + + try { + const entries = await Query.greaterThan("num_field", value) + .ascending(field) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].slice(1).every(function (entry) { + const flag = entry[field] > value; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".greaterThan()"); + } + }); + + test(".greaterThanOrEqualTo()", async () => { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + const field = "num_field"; + const value = 11; + + try { + const entries = await Query.greaterThanOrEqualTo("num_field", value) + .descending(field) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); -/*! - *Element(exists) - * !*/ - -test('.exists()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - queryField = "boolean", - field = 'updated_at'; - - Query - .exists(queryField) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries should not be present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".exists()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] >= value; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".greaterThanOrEqualTo()"); + } + }); + + test(".notEqualTo()", async () => { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + const field = "num_field"; + const value = 6; + + try { + const entries = await Query.notEqualTo("num_field", value) + .descending(field) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); -test('.notExists()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - queryField = "isspecial", - field = 'updated_at'; - - Query - .notExists(queryField) - .toJSON() - .find() - .then(function success(entries) { - assert.ok("entries" in entries, 'Entries key present in the resultset'); - //assert.notok(entries[0].length, 'No entry present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notExists()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] != value; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".notEqualTo()"); + } + }); + }); + describe("array/subset", () => { + test(".containedIn()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const _in = ["source1", "source2"]; + const field = "updated_at"; -// Pagination -test('.skip()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - - Query - .toJSON() - .find() - .then(function success(allEntries) { - // assert.ok("entries" in allEntries, 'Entries key present in the resultset'); - Stack - .ContentType(contentTypes.source) - .Query() - .skip(1) - .toJSON() - .find() - .then(function result(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok((entries[0].length >= 2), '2 or more Entries present in the resultset'); - assert.deepEqual(allEntries[0].slice(1), entries[0], 'All elements matched.'); - if (entries && entries.length && entries[0].length) { - allEntries[0] = allEntries[0].slice(1); - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(""); - assert.end(); - }); - }, function error(err) { - console.error("error :", err); - assert.fail("skip()"); - assert.end(); - }); -}); + try { + const entries = await Query.containedIn("title", _in).toJSON().find(); -test('.limit()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - - Query - .toJSON() - .find() - .then(function success(allEntries) { - // assert.ok("entries" in allEntries, 'Entries key present in the resultset'); - Stack - .ContentType(contentTypes.source) - .Query() - .limit(2) - .toJSON() - .find() - .then(function result(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.deepEqual(allEntries[0].slice(0, 2), entries[0], 'All elements matched.'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".limit()"); - assert.end(); - }); - }, function error(err) { - console.error("error :", err); - assert.fail(".limit()"); - assert.end(); - }); -}); + expect(entries[0].length).toBeTruthy(); -test('.count()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .count() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0], 'Entries present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".count()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return _in.indexOf(entry["title"]) != -1; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".containedIn()"); + } + }); + + test(".notContainedIn()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const _in = ["sourceddd1", "sourceddddd2"]; + + try { + const entries = await Query.notContainedIn("title", _in) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + } catch (err) { + console.error("error:", err); + fail(".notContainedIn()"); + } + }); + }); + + describe("exists", () => { + test(".exists()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const queryField = "boolean"; + const field = "updated_at"; + + try { + const entries = await Query.exists(queryField).toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".exists()"); + } + }); + test(".notExists()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const queryField = "isspecial"; + const field = "updated_at"; -// Logical -test('.or() - Query Objects', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1', 'source2']); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .or(Query1, Query2) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (~(entry.title === 'source1' || entry.boolean === true)); - }); - assert.ok(_entries, '$OR condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".or() - Query Objects"); - assert.end(); - }); -}); + try { + const entries = await Query.notExists(queryField).toJSON().find(); -test('.and() - Query Objects', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().where('title', 'source1'); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .and(Query1, Query2) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, '1 Entry present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (~(entry.title === 'source1' || entry.boolean === true)); - }); - assert.ok(_entries, '$AND condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".and() - Query Objects"); - assert.end(); - }); -}); + expect("entries" in entries).toBeTruthy(); -test('.and() - Raw queries', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().where('title', 'source1'); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .and(Query1, Query2) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, '1 Entry present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (~(entry.title === 'source1' || entry.boolean === true)); - }); - assert.ok(_entries, '$AND condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".and() - Raw queries"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + return entry[field] <= prev; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".notExists()"); + } + }); + }); + + describe("pagination", () => { + test(".skip()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "updated_at"; + + try { + const allEntries = await Query.toJSON().find(); + + const entries = await Stack.ContentType(contentTypes.source) + .Query() + .skip(1) + .toJSON() + .find(); + + expect(entries[0].length).toBeGreaterThanOrEqual(2); + expect(allEntries[0].slice(1)).toEqual(entries[0]); + if (entries && entries.length && entries[0].length) { + allEntries[0] = allEntries[0].slice(1); + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".skip()"); + } + }); -// Custom query -test('.query() - Raw query', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .query({ "$or": [{ "title": "source1" }, { "boolean": "true" }] }) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (entry.title === 'source1' || entry.boolean === true) - }); - assert.ok(_entries, '$OR condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".query() - Raw query"); - assert.end(); - }); -}); + test(".limit()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "updated_at"; + try { + const allEntries = await Query.toJSON().find(); -// tags -test('.tags()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'tags', - tags = ["tag1", "tag2"]; - - Query - .tags(tags) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok((entries.length >= 1), '1 or more Entry/Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (Utils.arrayPresentInArray(tags, entry[field])); - }); - assert.equal(_entries, true, 'Tags specified are found in result set'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".tags()"); - assert.end(); - }); -}); + const entries = await Stack.ContentType(contentTypes.source) + .Query() + .limit(2) + .toJSON() + .find(); + expect(entries[0].length).toBeTruthy(); + expect(allEntries[0].slice(0, 2)).toEqual(entries[0]); -// search -test('.search()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .search('source1') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, '1 or more Entry present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".search()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".limit()"); + } + }); + + test(".count()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.count().toJSON().find(); + + expect(entries[0]).toBeTruthy(); + } catch (err) { + console.error("error:", err); + fail(".count()"); + } + }); + }); + + describe("logical", () => { + test(".or() - Query Objects", async () => { + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .containedIn("title", ["source1", "source2"]); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.or(Query1, Query2).toJSON().find(); + + expect(entries[0].length).toBeTruthy(); -// regex -test('.regex()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'title', - regex = { - pattern: '^source', - options: 'i' - }, - regexpObj = new RegExp(regex.pattern, regex.options); - - Query - .regex(field, regex.pattern, regex.options) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok((entries.length >= 1), '1 or more Entry/Entries present in the resultset'); - var flag = entries[0].every(function(entry) { - return regexpObj.test(entry[field]); - }); - assert.ok(flag, "regexp satisfied for all the entries in the resultset"); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".regex()"); - assert.end(); - }); -}); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return ~(entry.title === "source1" || entry.boolean === true); + }); + expect(_entries).toBeTruthy(); + } + } catch (err) { + console.error("error:", err); + fail(".or() - Query Objects"); + } + }); + + test(".and() - Query Objects", async () => { + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .where("title", "source1"); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.and(Query1, Query2).toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return ~(entry.title === "source1" || entry.boolean === true); + }); + expect(_entries).toBeTruthy(); + } + } catch (err) { + console.error("error:", err); + fail(".and() - Query Objects"); + } + }); + + test(".and() - Raw queries", async () => { + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .where("title", "source1"); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.and(Query1, Query2).toJSON().find(); + + expect(entries[0].length).toBeTruthy(); -test('find: without fallback', function(assert) { - var _in = ['ja-jp'] - Stack.ContentType(contentTypes.source).Query().language('ja-jp') - .toJSON() - .find() - .then((entries) => { - assert.ok(entries[0].length, 'Entries present in the resultset'); if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (_in.indexOf(entry['publish_details']['locale']) != -1); - }); - assert.equal(_entries, true, "Publish content fallback"); + const _entries = entries[0].every(function (entry) { + return ~(entry.title === "source1" || entry.boolean === true); + }); + expect(_entries).toBeTruthy(); } - assert.end(); - }).catch((error) => { - assert.fail("Entries default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -test('find: fallback', function(assert) { - var _in = ['ja-jp', 'en-us'] - Stack.ContentType(contentTypes.source).Query().language('ja-jp') - .includeFallback() - .toJSON() - .find() - .then((entries) => { - assert.ok(entries[0].length, 'Entries present in the resultset'); + } catch (err) { + console.error("error:", err); + fail(".and() - Raw queries"); + } + }); + }); + + describe("custom query", () => { + test(".query() - Raw query", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.query({ + $or: [{ title: "source1" }, { boolean: "true" }], + }) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (_in.indexOf(entry['publish_details']['locale']) != -1); - }); - assert.equal(_entries, true, "Publish content fallback"); + const _entries = entries[0].every(function (entry) { + return entry.title === "source1" || entry.boolean === true; + }); + expect(_entries).toBeTruthy(); } - assert.end(); - }).catch((error) => { - assert.fail("Entries default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -// includeReference -test('.includeReference() - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && entry['reference'] && typeof entry['reference'] === 'object'); - }); - assert.equal(flag, true, 'all the present reference are included'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeReference() - String"); - assert.end(); - }); -}); + } catch (err) { + console.error("error:", err); + fail(".query() - Raw query"); + } + }); + }); -test('.includeReference() - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference(['reference', 'other_reference']) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && entry['reference'] && typeof entry['reference'] === 'object' && entry['other_reference'] && typeof entry['other_reference'] === 'object'); - }); - assert.equal(flag, true, 'all the present reference are included'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeReference() - Array"); - assert.end(); - }); -}); + describe("tags", () => { + test(".tags()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "tags"; + const tags = ["tag1", "tag2"]; -// includeCount -test('.includeCount()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeCount() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".includeCount()"); - assert.end(); - }); -}); + try { + const entries = await Query.tags(tags).toJSON().find(); + + expect(entries.length).toBeGreaterThanOrEqual(1); -// includeSchema -test('.includeSchema()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1].length, 'Schema present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeSchema()"); - assert.end(); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return Utils.arrayPresentInArray(tags, entry[field]); + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".tags()"); + } + }); + }); + + describe("search", () => { + test(".search()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.search("source1").toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".search()"); + } + }); + }); + + describe("regex", () => { + test(".regex()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "title"; + const regex = { + pattern: "^source", + options: "i", + }; + const regexpObj = new RegExp(regex.pattern, regex.options); + + try { + const entries = await Query.regex(field, regex.pattern, regex.options) + .toJSON() + .find(); + + expect(entries.length).toBeGreaterThanOrEqual(1); + + const flag = entries[0].every(function (entry) { + return regexpObj.test(entry[field]); }); -}); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".regex()"); + } + }); + }); + + describe("locale and fallback", () => { + test("find: without fallback", async () => { + const _in = ["ja-jp"]; + + try { + const entries = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return _in.indexOf(entry["publish_details"]["locale"]) != -1; + }); + expect(_entries).toBe(true); + } + } catch (error) { + fail("Entries default .find() fallback catch: " + error.toString()); + } + }); -// includeCount && includeSchema -test('.includeCount() and .includeSchema()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeCount() - .includeSchema() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1].length, 'Schema present in the resultset'); - assert.ok(entries[2], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeSchema()"); - assert.end(); - }); -}); + test("find: fallback", async () => { + const _in = ["ja-jp", "en-us"]; -// includeContentType -test('.includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".includeContentType()"); - assert.end(); - }); -}); + try { + const entries = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .includeFallback() + .toJSON() + .find(); -// includeCount && includeContentType -test('.includeCount() and .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeCount() - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - assert.ok(entries[2], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeCount && includeContentType"); - assert.end(); - }); -}); + expect(entries[0].length).toBeTruthy(); -// includeSchema && includeContentType -test('.includeSchema() and .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeCount && includeContentType"); - assert.end(); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return _in.indexOf(entry["publish_details"]["locale"]) != -1; + }); + expect(_entries).toBe(true); + } + } catch (error) { + fail("Entries default .find() fallback catch: " + error.toString()); + } + }); + }); + + describe("include reference", () => { + test(".includeReference() - String", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeReference("reference") + .toJSON() + .find(); + + const flag = entries[0].every(function (entry) { + return ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ); }); -}); - -// includeCount, includeSchema && includeContentType -test('.includeSchema() and .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeCount() - .includeSchema() - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - assert.ok(entries[2], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeCount && includeContentType"); - assert.end(); + expect(flag).toBe(true); + } catch (err) { + console.error("Error:", err); + fail(".includeReference() - String"); + } + }); + + test(".includeReference() - Array", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeReference([ + "reference", + "other_reference", + ]) + .toJSON() + .find(); + + const flag = entries[0].every(function (entry) { + return ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" && + entry["other_reference"] && + typeof entry["other_reference"] === "object" + ); }); -}); - - -// only -test('.only() - Single String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only('title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry); - }); - assert.ok(flag, 'entries with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".only() - Single String Parameter"); - assert.end(); + expect(flag).toBe(true); + } catch (err) { + console.error("Error:", err); + fail(".includeReference() - Array"); + } + }); + }); + + describe("include count and schema", () => { + test(".includeCount()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeCount().toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + expect(entries[1]).toBeTruthy(); + } catch (err) { + console.error("error:", err); + fail(".includeCount()"); + } + }); + + test(".includeSchema()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeSchema().toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + expect(entries[1].length).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".includeSchema()"); + } + }); + + test(".includeCount() and .includeSchema()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeCount() + .includeSchema() + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + expect(entries[1].length).toBeTruthy(); + expect(entries[2]).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".includeSchema()"); + } + }); + }); + + describe("include contenttypes", () => { + test(".includeContentType()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeContentType().toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + expect(entries[1]).toBeTruthy(); + expect(entries[1]["title"]).toBeTruthy(); + expect(entries[1]["uid"]).toBe(contentTypes.source); + } catch (err) { + console.error("error:", err); + fail(".includeContentType()"); + } + }); + + test(".includeCount() and .includeContentType()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeCount() + .includeContentType() + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + expect(entries[1]).toBeTruthy(); + expect(entries[1]["title"]).toBeTruthy(); + expect(entries[1]["uid"]).toBe(contentTypes.source); + expect(entries[2]).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".includeCount && includeContentType"); + } + }); + + test(".includeSchema() and .includeContentType()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeSchema() + .includeContentType() + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + expect(entries[1]).toBeTruthy(); + expect(entries[1]["title"]).toBeTruthy(); + expect(entries[1]["uid"]).toBe(contentTypes.source); + } catch (err) { + console.error("Error:", err); + fail(".includeCount && includeContentType"); + } + }); + + test(".includeCount(), .includeSchema() and .includeContentType()", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeCount() + .includeSchema() + .includeContentType() + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + expect(entries[1]).toBeTruthy(); + expect(entries[1]["title"]).toBeTruthy(); + expect(entries[1]["uid"]).toBe(contentTypes.source); + expect(entries[2]).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".includeCount && includeContentType"); + } + }); + }); + + describe("field projections", () => { + test(".only() - Single String Parameter", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.only("title").toJSON().find(); + + const flag = entries[0].every(function (entry) { + return ( + entry && + Object.keys(entry).length === 2 && + "title" in entry && + "uid" in entry + ); }); -}); - -test('.only() - Multiple String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only('BASE', 'title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry); - }); - assert.ok(flag, 'entries with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".only() - Multiple String Parameter"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Single String Parameter"); + } + }); + + test(".only() - Multiple String Parameter", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.only("BASE", "title").toJSON().find(); + + const flag = entries[0].every(function (entry) { + return ( + entry && + Object.keys(entry).length === 2 && + "title" in entry && + "uid" in entry + ); }); -}); - -test('.only() - Array Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only(['title', 'url']) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && Object.keys(entry).length === 3 && "title" in entry && "url" in entry && "uid" in entry); - }); - assert.ok(flag, 'entries with the field title,url in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".only() - Array Parameter"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Multiple String Parameter"); + } + }); + + test(".only() - Array Parameter", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.only(["title", "url"]).toJSON().find(); + + const flag = entries[0].every(function (entry) { + return ( + entry && + Object.keys(entry).length === 3 && + "title" in entry && + "url" in entry && + "uid" in entry + ); }); -}); - -test('.only() - For the reference - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .only('reference', 'title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".only() - For the reference - String"); - assert.end(); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - Array Parameter"); + } + }); + + test(".only() - For the reference - String", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .only("reference", "title") + .toJSON() + .find(); + + expect(entries).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - For the reference - String"); + } + }); + + test(".only() - For the reference - Array", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .only("reference", ["title"]) + .toJSON() + .find(); + + expect(entries).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".only() - For the reference - Array"); + } + }); + + test(".except() - Single String Parameter", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.except("title").toJSON().find(); + + const flag = entries[0].every(function (entry) { + return entry && !("title" in entry); }); -}); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".except() - Single String Parameter"); + } + }); -test('.only() - For the reference - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .only('reference', ['title']) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".only() - For the reference - Array"); - assert.end(); - }); -}); + test(".except() - Multiple String Parameter", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); -// except -test('.except() - Single String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except('title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && !("title" in entry)); - }); - assert.ok(flag, 'entries without the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".except() - Single String Parameter"); - assert.end(); - }); -}); + try { + const entries = await Query.except("BASE", "title").toJSON().find(); -test('.except() - Multiple String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except('BASE', 'title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && !("title" in entry)); - }); - assert.ok(flag, 'entries without the field title, url in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".except() - Multiple String Parameter"); - assert.end(); + const flag = entries[0].every(function (entry) { + return entry && !("title" in entry); }); -}); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".except() - Multiple String Parameter"); + } + }); -test('.except() - Array of String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except(['title', 'file']) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && !("title" in entry) && !("file" in entry)); - }); - assert.ok(flag, 'entries without the field title, file in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".except() - Array of String Parameter"); - assert.end(); - }); -}); + test(".except() - Array of String Parameter", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + try { + const entries = await Query.except(["title", "file"]).toJSON().find(); -test('.except() - For the reference - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .except('reference', 'title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - var _flag; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - _flag = true; - _flag = entry.reference.every(function(reference) { - return (reference && !("title" in reference)); - }); - } else { - _flag = false; - } - return (_flag && entry && Object.keys(entry).length === 2 && "reference" in entry && "uid" in entry); + const flag = entries[0].every(function (entry) { + return entry && !("title" in entry) && !("file" in entry); + }); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".except() - Array of String Parameter"); + } + }); + test(".except() - For the reference - String", async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + + const entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .except("reference", "title") + .toJSON() + .find(); + + const flag = entries[0].every((entry) => { + let _flag; + if ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ) { + _flag = true; + _flag = entry.reference.every((reference) => { + return reference && !("title" in reference); }); - assert.ok(flag, 'entries withthe field reference without title field in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".except() - For the reference - String"); - assert.end(); + } else { + _flag = false; + } + return ( + _flag && + entry && + Object.keys(entry).length === 2 && + "reference" in entry && + "uid" in entry + ); }); -}); -test('.except() - For the reference - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .except('reference', ['title']) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - var _flag; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - _flag = true; - _flag = entry.reference.every(function(reference) { - return (reference && !("title" in reference)); - }); - } else { - _flag = false; - } - return (_flag && entry && Object.keys(entry).length === 2 && "reference" in entry && "uid" in entry); + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".except() - For the reference - String"); + } + }); + + test(".except() - For the reference - Array", async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + + const entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .except("reference", ["title"]) + .toJSON() + .find(); + + const flag = entries[0].every((entry) => { + let _flag; + if ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ) { + _flag = true; + _flag = entry.reference.every((reference) => { + return reference && !("title" in reference); }); - assert.ok(flag, 'entries with the field reference without title field in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".except() - For the reference - Array"); - assert.end(); + } else { + _flag = false; + } + return ( + _flag && + entry && + Object.keys(entry).length === 2 && + "reference" in entry && + "uid" in entry + ); }); -}); \ No newline at end of file + + expect(flag).toBeTruthy(); + } catch (err) { + console.error("Error:", err); + fail(".except() - For the reference - Array"); + } + }); + }); +}); diff --git a/test/entry/find.js b/test/entry/find.js index 7c4c2c57..081c80b7 100755 --- a/test/entry/find.js +++ b/test/entry/find.js @@ -1,1676 +1,1714 @@ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const test = require('tape'); -const Contentstack = require('../../dist/node/contentstack.js'); -const init = require('../config.js'); -const Utils = require('./utils.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const init = require("../config.js"); +const Utils = require("./utils.js"); const contentTypes = init.contentTypes; let Stack; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); - -test('early_access in stack initialization', function (t) { - const stack = Contentstack.Stack({ ...init.stack, early_access: ['newCDA', 'taxonomy'] }); - t.equal(stack.headers['x-header-ea'], 'newCDA,taxonomy', 'Early access headers should be added'); - t.end(); -}); - -test('default .find()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - Query - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.notok(entries[1], 'Count should not be present'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - prev = entry[field]; - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail("default .find()"); - assert.end(); - }); -}); - -/*! - * SORTING - * !*/ -test('.ascending()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - - Query - .ascending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - prev = entry[field]; - return (entry[field] >= prev); - }); - assert.equal(_entries, true, "entries sorted ascending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".ascending()"); - assert.end(); - }); -}); - -test('.descending()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'created_at'; - - Query - .descending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".descending()"); - assert.end(); - }); -}); - - -// addparam -test('.addParam()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .addParam('include_count', 'true') - .toJSON() - .find() - .then(function success(entries) { - assert.ok(entries[0].length, 'Entries length present in the resultset'); - assert.ok(entries[1], 'count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".addParam()"); - assert.end(); - }); -}); - - -/*! - * COMPARISION - * !*/ -test('.lessThan()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - Query - .lessThan('num_field', value) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, '1 Entry present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].slice(1).every(function(entry) { - var flag = (entry[field] < value); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error('Error : ', err); - assert.fail(".lessThan()"); - assert.end(); - }); -}); - -test('.lessThanOrEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'updated_at', - value = 11; - - Query - .lessThanOrEqualTo('num_field', value) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".lessThanOrEqualTo()"); - assert.end(); - }); -}); - -test('.greaterThan()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - - Query - .greaterThan('num_field', value) - .ascending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].slice(1).every(function(entry) { - var flag = (entry[field] > value); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted ascending on '" + field + "' field"); - } - assert.end(); - }, function error() { - assert.fail(".greaterThan()"); - assert.end(); - }); -}); - -test('.greaterThanOrEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - - Query - .greaterThanOrEqualTo('num_field', value) - .descending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] >= value); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".greaterThanOrEqualTo()"); - assert.end(); - }); -}); - -test('.notEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 6; - - Query - .notEqualTo('num_field', value) - .descending(field) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] != value); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notEqualTo()"); - assert.end(); - }); -}); - -test('.where() compare boolean value (true)', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .where('boolean', true) - .toJSON() - .find() - .then(function success(entries) { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.equal(entries[0].length, 4, 'two entries present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".where()"); - assert.end(); - }); -}); - -test('.where() compare boolean value (false)', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - Query - .where('boolean', false) - .toJSON() - .find() - .then(function success(entries) { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.equal(entries[0].length, 3, ' three entries present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".where() boolean value having false"); - assert.end(); - }); -}); - -test('.where()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .where('title', '') - .toJSON() - .find() - .then(function success(entries) { - assert.equal(entries[0].length, 0, ' zero entry present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".equalTo compare boolean value (true)"); - assert.end(); - }); -}); - -test('.equalTo() compare boolean value (true)', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .equalTo('boolean', true) - .toJSON() - .find() - .then(function success(entries) { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.equal(entries[0].length, 4, ' four entries present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".where()"); - assert.end(); - }); -}); - -test('.equalTo() compare boolean value (false)', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - Query - .equalTo('boolean', false) - .toJSON() - .find() - .then(function success(entries) { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.equal(entries[0].length, 3, ' three entries present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".where() boolean value having false"); - assert.end(); - }); -}); - -// /*! -// * Array/Subset -// * !*/ - -test('.containedIn()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - _in = ["source1", "source2"], - field = 'updated_at'; - - Query - .containedIn('title', _in) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[0].length, 2, 'two entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (_in.indexOf(entry['title']) != -1); - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".containedIn()"); - assert.end(); - }); -}); - -test('.notContainedIn()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - _in = ["source1", "source2"]; - - Query - .notContainedIn('title', _in) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(entries[0].length, 'No Entry present in the resultset'); - assert.ok(entries[0].length, 3, 'three Entries present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notContainedIn()"); - assert.end(); - }); -}); - - -/*! - *Element(exists) - * !*/ - -test('.exists()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - queryField = "boolean", - field = 'updated_at'; - - Query - .exists(queryField) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".exists()"); - assert.end(); - }); -}); - -test('.notExists()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - queryField = "isspecial", - field = 'updated_at'; - - Query - .notExists(queryField) - .toJSON() - .find() - .then(function success(entries) { - assert.ok("entries" in entries, 'Entries key present in the resultset'); - //assert.notok(entries[0].length, 'No entry present in the resultset'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".notExists()"); - assert.end(); - }); -}); - - -// Pagination -test('.skip()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - - Query - .toJSON() - .find() - .then(function success(allEntries) { - //assert.equal(Utils.isEntriesPublished(allEntries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - // assert.ok("entries" in allEntries, 'Entries key present in the resultset'); - Stack - .ContentType(contentTypes.source) - .Query() - .skip(1) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok((entries[0].length >= 2), '2 or more Entries present in the resultset'); - assert.deepEqual(allEntries[0].slice(1), entries[0], 'All elements matched.'); - if (entries && entries.length && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".skip()"); - assert.end(); - }); - }, function error(err) { - console.error("error :", err); - assert.fail(".skip()"); - assert.end(); - }); -}); - -test('.limit()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - - Query - .toJSON() - .find() - .then(function success(allEntries) { - //assert.equal(Utils.isEntriesPublished(allEntries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - // assert.ok("entries" in allEntries, 'Entries key present in the resultset'); - Stack - .ContentType(contentTypes.source) - .Query() - .limit(2) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.deepEqual(allEntries[0].slice(0, 2), entries[0], 'All elements matched.'); - if (entries && entries.length && entries[0] && entries[0].length) { - var prev = entries[0][0][field]; - var _entries = entries[0].every(function(entry) { - var flag = (entry[field] <= prev); - prev = entry[field]; - return flag; - }); - assert.equal(_entries, true, "entries sorted descending on '" + field + "' field"); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".limit()"); - assert.end(); - }); - }, function error(err) { - console.error("error :", err); - assert.fail(".limit()"); - assert.end(); - }); -}); - -test('.count()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .count() - .toJSON() - .find() - .then(function success(count) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.ok(count, 'Entries present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".count()"); - assert.end(); - }); -}); - - -// Logical -test('.or() - Query Objects', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().where('title', 'source2'); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .or(Query1, Query2) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[0].length, 2, 'two entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (~(entry.title === 'source1' || entry.boolean === true)); - }); - assert.ok(_entries, '$OR condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".or() - Query Objects"); - assert.end(); - }); -}); - -test('.and() - Query Objects', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().where('title', 'source1'); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .and(Query1, Query2) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, '1 Entry present in the resultset'); - if (entries && entries.length && entries[0].length) { - // console.log("\n\n\n\n",JSON.stringify(entries)); - var _entries = entries[0].every(function(entry) { - return (~(entry.title === 'source1' || entry.boolean === true)); - }); - assert.ok(_entries, '$AND condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".and() - Query Objects"); - assert.end(); - }); -}); - -// Custom query -test('.query() - Raw query', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .query({ "$or": [{ "title": "source2" }, { "boolean": "true" }] }) - .toJSON() - .find() - .then(function success(entries) { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[0].length, 2, 'two entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (entry.title === 'source2' || entry.boolean === false) - }); - assert.ok(_entries, '$OR condition satisfied'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".query() - Raw query"); - assert.end(); - }); -}); - - -// tags -test('.tags()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'tags', - tags = ["tag1", "tag2"]; - - Query - .tags(tags) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - // assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok((entries.length >= 1), '1 or more Entry/Entries present in the resultset'); - if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (Utils.arrayPresentInArray(tags, entry[field])); - }); - assert.equal(_entries, true, 'Tags specified are found in result set'); - } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".tags()"); - assert.end(); - }); -}); - - -// search -test('.search()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - Query - .toJSON() - .search('source2') - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, '1 Entry present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".search()"); - assert.end(); - }); -}); - -// regex -test('.regex()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'title', - regex = { - pattern: '^source', - options: 'i' - }, - regexpObj = new RegExp(regex.pattern, regex.options); - - Query - .regex(field, regex.pattern, regex.options) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok((entries.length >= 1), '1 or more Entry/Entries present in the resultset'); - var flag = entries[0].every(function(entry) { - return regexpObj.test(entry[field]); - }); - assert.ok(flag, "regexp satisfied for all the entries in the resultset"); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".regex()"); - assert.end(); - }); -}); - -// inlcudeEmbeddedItems -test('.inlcudeEmbeddedItems()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeEmbeddedItems() - .toJSON() - .find() - .then(function success(entries) { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".inlcudeEmbeddedItems()"); - assert.end(); - }); -}); - -test('find: without fallback', function(assert) { - var _in = ['ja-jp'] - Stack.ContentType(contentTypes.source).Query().language('ja-jp') - .toJSON() - .find() - .then((entries) => { - assert.ok(entries[0].length, 'Entries present in the resultset'); + +describe("ContentStack SDK Tests", () => { + // Setup - Initialize the Contentstack Stack Instance + beforeAll((done) => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(done, 1000); + }); + + describe("Stack Initialization", () => { + test("early_access in stack initialization should add headers", () => { + const stack = Contentstack.Stack({ + ...init.stack, + early_access: ["newCDA", "taxonomy"], + }); + expect(stack.headers["x-header-ea"]).toBe("newCDA,taxonomy"); + }); + }); + + describe("Default Find", () => { + let entries + const field = "updated_at"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Count should not be present", () => { + expect(entries[1]).toBeFalsy(); + }); + + test("Entries should be sorted by default in descending order of updated_at", () => { + if (entries && entries.length && entries[0].length > 1) { + let prev = entries[0][0][field]; + const sortedCorrectly = entries[0].slice(1).every((entry) => { + const isValid = entry[field] <= prev; + prev = entry[field]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); + } + }); + }); + + describe("Sorting", () => { + describe(".ascending()", () => { + let entries; + const field = "updated_at"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.ascending(field).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Entries should be sorted in ascending order", () => { + if (entries && entries.length && entries[0].length > 1) { + let prev = entries[0][0][field]; + const sortedCorrectly = entries[0].slice(1).every((entry) => { + const isValid = entry[field] >= prev; + prev = entry[field]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); + } + }); + }); + + describe(".descending()", () => { + let entries; + const field = "created_at"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.descending(field).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Entries should be sorted in descending order", () => { + if (entries && entries.length && entries[0].length > 1) { + let prev = entries[0][0][field]; + const sortedCorrectly = entries[0].slice(1).every((entry) => { + const isValid = entry[field] <= prev; + prev = entry[field]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); + } + }); + }); + }); + + describe("Parameters", () => { + describe(".addParam()", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.addParam("include_count", "true") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Count should be present", () => { + expect(entries[1]).toBeTruthy(); + }); + }); + }); + + describe("Comparison", () => { + describe(".lessThan()", () => { + let entries; + const field = "num_field"; + const value = 11; + + test("Should return entry in the resultset", async () => { + try { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + + const result = await Query.lessThan("num_field", value) + .toJSON() + .find(); + + entries = result; + expect(entries[0].length).toBeTruthy(); + } catch (err) { + fail("Query.lessThan failed"); + } + }); + + test("All entries should have num_field less than specified value", () => { if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (_in.indexOf(entry['publish_details']['locale']) != -1); - }); - assert.equal(_entries, true, "Publish content fallback"); + const allLessThan = entries[0].every((entry) => entry[field] < value); + expect(allLessThan).toBe(true); + } + }); + }); + + describe(".lessThanOrEqualTo()", () => { + let entries; + const field = "num_field"; + const value = 11; + + beforeAll(async () => { + try { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entries = await Query.lessThanOrEqualTo("num_field", value) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should have num_field less than or equal to specified value", () => { + const allLessThanOrEqual = entries[0].every( + (entry) => entry[field] <= value + ); + expect(allLessThanOrEqual).toBe(true); + }); + + test("Entries should be sorted in descending order by default", () => { + const updatedAtField = "updated_at"; + if (entries && entries.length && entries[0].length > 1) { + let prev = entries[0][0][updatedAtField]; + const sortedCorrectly = entries[0].slice(1).every((entry) => { + const isValid = entry[updatedAtField] <= prev; + prev = entry[updatedAtField]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); + } + }); + }); + + describe(".greaterThan()", () => { + let entries; + const field = "num_field"; + const value = 11; + + beforeAll(async () => { + try { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entries = await Query.greaterThan("num_field", value) + .ascending(field) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should have num_field greater than specified value", () => { + const allGreaterThan = entries[0].every( + (entry) => entry[field] > value + ); + expect(allGreaterThan).toBe(true); + }); + + test("Entries should be sorted in ascending order", () => { + if (entries && entries.length && entries[0].length > 1) { + let prev = entries[0][0][field]; + const sortedCorrectly = entries[0].slice(1).every((entry) => { + const isValid = entry[field] >= prev; + prev = entry[field]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); + } + }); + }); + + describe(".greaterThanOrEqualTo()", () => { + let entries; + const field = "num_field"; + const value = 11; + + beforeAll(async () => { + try { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entries = await Query.greaterThanOrEqualTo("num_field", value) + .descending(field) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should have num_field greater than or equal to specified value", () => { + const allGreaterThanOrEqual = entries[0].every( + (entry) => entry[field] >= value + ); + expect(allGreaterThanOrEqual).toBe(true); + }); + + test("Entries should be sorted in descending order", () => { + if (entries && entries.length && entries[0].length > 1) { + let prev = entries[0][0][field]; + const sortedCorrectly = entries[0].slice(1).every((entry) => { + const isValid = entry[field] <= prev; + prev = entry[field]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); } - assert.end(); - }).catch((error) => { - assert.fail("Entries default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -test('find: fallback', function(assert) { - var _in = ['ja-jp', 'en-us'] - Stack.ContentType(contentTypes.source).Query().language('ja-jp') - .includeFallback() - .toJSON() - .find() - .then((entries) => { - assert.ok(entries[0].length, 'Entries present in the resultset'); + }); + }); + + describe(".notEqualTo()", () => { + let entries; + const field = "num_field"; + const value = 6; + + beforeAll(async () => { + try { + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entries = await Query.notEqualTo("num_field", value) + .descending(field) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should have num_field not equal to specified value", () => { + const allNotEqual = entries[0].every((entry) => entry[field] !== value); + expect(allNotEqual).toBe(true); + }); + + test("Entries should be sorted in descending order", () => { + if (entries && entries.length && entries[0].length > 1) { + let prev = entries[0][0][field]; + const sortedCorrectly = entries[0].slice(1).every((entry) => { + const isValid = entry[field] <= prev; + prev = entry[field]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); + } + }); + }); + + describe(".where() with boolean value (true)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.where("boolean", true).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Should return four entries in the resultset", () => { + expect(entries[0].length).toBe(4); + }); + + test("All entries should have boolean field set to true", () => { + const allTrue = entries[0].every((entry) => entry.boolean === true); + expect(allTrue).toBe(true); + }); + }); + + describe(".where() with boolean value (false)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.where("boolean", false).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Should return three entries in the resultset", () => { + expect(entries[0].length).toBe(3); + }); + + test("All entries should have boolean field set to false", () => { + const allFalse = entries[0].every((entry) => entry.boolean === false); + expect(allFalse).toBe(true); + }); + }); + + describe(".where() with empty string", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.where("title", "").toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return zero entries in the resultset", () => { + expect(entries[0].length).toBe(0); + }); + }); + describe(".tags()", () => { + let entries; + const field = "tags"; + const tags = ["tag1", "tag2"]; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.tags(tags).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return one or more entries in the resultset", () => { + expect(entries.length).toBeGreaterThanOrEqual(1); + }); + + test("All entries should have at least one of the specified tags", () => { if (entries && entries.length && entries[0].length) { - var _entries = entries[0].every(function(entry) { - return (_in.indexOf(entry['publish_details']['locale']) != -1); - }); - assert.equal(_entries, true, "Publish content fallback"); + const allHaveTags = entries[0].every((entry) => + Utils.arrayPresentInArray(tags, entry[field]) + ); + expect(allHaveTags).toBe(true); + } else { + // Skip this test if no entries were found + console.log("No entries found to check tags"); } - assert.end(); - }).catch((error) => { - assert.fail("Entries default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -// includeContentType -test('.includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1]['schema'], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - for(var i=0; i { + describe(".containedIn()", () => { + let entries; + const _in = ["source1", "source2"]; + const field = "title"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.containedIn("title", _in).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Should return two entries in the resultset", () => { + expect(entries[0].length).toBe(2); + }); + + test("All entries should have title field contained in the specified values", () => { + if (entries && entries.length && entries[0].length) { + const allContained = entries[0].every((entry) => + _in.includes(entry[field]) + ); + expect(allContained).toBe(true); + } + }); + }); + + describe(".notContainedIn()", () => { + let entries; + const _in = ["source1", "source2"]; + const field = "title"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.notContainedIn("title", _in).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Should return three entries in the resultset", () => { + expect(entries[0].length).toBe(5); + }); + + test("All entries should have title field not contained in the specified values", () => { + if (entries && entries.length && entries[0].length) { + const allNotContained = entries[0].every( + (entry) => !_in.includes(entry[field]) + ); + expect(allNotContained).toBe(true); + } + }); + }); + test(".exists() should return entries with the specified field", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const queryField = "boolean"; + const field = "updated_at"; + + try { + const entries = await Query.exists(queryField).toJSON().find(); + + // Check if entries are returned + expect(entries[0].length).toBeTruthy(); + + // Verify sorting order (descending on updated_at) + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".exists() test failed"); + } + }); + + test(".notExists() should return entries without the specified field", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const queryField = "isspecial"; + const field = "updated_at"; + + try { + const entries = await Query.notExists(queryField).toJSON().find(); + + // Check if entries are returned + expect("entries" in entries).toBeTruthy(); + + // Verify sorting order if entries exist + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + return entry[field] <= prev; + }); + expect(_entries).toBe(true); + } + } catch (err) { + console.error("error:", err); + fail(".notExists() test failed"); + } + }); + }); + + describe("Pagination Tests", () => { + describe(".skip()", () => { + let allEntries; + let skippedEntries; + const field = "updated_at"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + allEntries = await Query.toJSON().find(); + + const SkipQuery = Stack.ContentType(contentTypes.source).Query(); + skippedEntries = await SkipQuery.skip(1).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("All entries should be present in the resultset", () => { + expect(allEntries[0].length).toBeTruthy(); + }); + + test("Skipped entries should be present in the resultset", () => { + expect(skippedEntries[0].length).toBeGreaterThanOrEqual(2); + }); + + test("Skipped entries should match all entries with first skipped", () => { + expect(skippedEntries[0]).toEqual(allEntries[0].slice(1)); + }); + + test("Skipped entries should maintain sorting order", () => { + if ( + skippedEntries && + skippedEntries.length && + skippedEntries[0].length > 1 + ) { + let prev = skippedEntries[0][0][field]; + const sortedCorrectly = skippedEntries[0].slice(1).every((entry) => { + const isValid = entry[field] <= prev; + prev = entry[field]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); + } + }); + }); + + describe(".limit()", () => { + let allEntries; + let limitedEntries; + const field = "updated_at"; + const limitNumber = 2; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + allEntries = await Query.toJSON().find(); + + const LimitQuery = Stack.ContentType(contentTypes.source).Query(); + limitedEntries = await LimitQuery.limit(limitNumber).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("All entries should be present in the resultset", () => { + expect(allEntries[0].length).toBeTruthy(); + }); + + test("Limited entries should be present in the resultset", () => { + expect(limitedEntries[0].length).toBeTruthy(); + }); + + test("Limited entries should match first N entries from all entries", () => { + expect(limitedEntries[0]).toEqual(allEntries[0].slice(0, limitNumber)); + }); + + test("Limited entries should maintain sorting order", () => { + if ( + limitedEntries && + limitedEntries.length && + limitedEntries[0].length > 1 + ) { + let prev = limitedEntries[0][0][field]; + const sortedCorrectly = limitedEntries[0].slice(1).every((entry) => { + const isValid = entry[field] <= prev; + prev = entry[field]; + return isValid; + }); + expect(sortedCorrectly).toBe(true); + } + }); + }); + + describe(".count()", () => { + let count; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + count = await Query.count().toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Entries present in the resultset", () => { + expect(count).toBeTruthy(); + }); + }); + }); + + describe("Logical Operations", () => { + describe(".or() - Query Objects", () => { + let entries; + + beforeAll(async () => { + try { + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .where("title", "source2"); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entries = await Query.or(Query1, Query2).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Should return 1 entries in the resultset", () => { + expect(entries[0].length).toBe(5); + }); + + test("All entries should satisfy the OR condition", () => { + if (entries && entries.length && entries[0].length) { + let _entries = entries[0].every(function (entry) { + return ~(entry.title === "source1" || entry.boolean === true); + }); + expect(_entries).toBe(true); + } + }); + }); + + describe(".and() - Query Objects", () => { + let entries; + + beforeAll(async () => { + try { + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .where("title", "source1"); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entries = await Query.and(Query1, Query2).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return one entry in the resultset", () => { + expect(entries[0].length).toBe(1); + }); + + test("All entries should satisfy the AND condition", () => { + if (entries && entries.length && entries[0].length) { + const allMatchCondition = entries[0].every( + (entry) => entry.title === "source1" && entry.boolean === true + ); + expect(allMatchCondition).toBe(true); + } + }); + }); + + describe(".query() - Raw query", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.query({ + $or: [{ title: "source2" }, { boolean: "true" }], + }) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("Should return two entries in the resultset", () => { + expect(entries[0].length).toBe(1); + }); + + test("All entries should satisfy the OR condition", () => { + if (entries && entries.length && entries[0].length) { + const allMatchCondition = entries[0].every( + (entry) => entry.title === "source2" || entry.boolean === false + ); + expect(allMatchCondition).toBe(true); + } + }); + }); + + describe("Search Tests", () => { + describe(".search()", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.toJSON().search("source2").find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + }); + + describe("Including Additional Data Tests", () => { + describe(".includeCount() and .includeContentType()", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeCount() + .includeContentType() + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("ContentType should be present in the resultset", () => { + expect(entries[1]).toBeTruthy(); + }); + + test("ContentType title should exist", () => { + expect(entries[1].title).toBeDefined(); + }); + + test("ContentType uid should match requested content type", () => { + expect(entries[1].uid).toBe(contentTypes.source); + }); + + test("Count should be present in the resultset", () => { + expect(entries[2]).toBeTruthy(); + }); + }); + + describe(".includeEmbeddedItems()", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeEmbeddedItems().toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe(".includeSchema() and .includeContentType()", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeSchema() + .includeContentType() + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("ContentType should be present in the resultset", () => { + expect(entries[1]).toBeTruthy(); + }); + + test("ContentType title should exist", () => { + expect(entries[1].title).toBeDefined(); + }); + + test("ContentType uid should match requested content type", () => { + expect(entries[1].uid).toBe(contentTypes.source); + }); + }); + + describe(".includeCount(), .includeSchema() and .includeContentType()", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeCount() + .includeSchema() + .includeContentType() + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("ContentType should be present in the resultset", () => { + expect(entries[1]).toBeTruthy(); + }); + + test("ContentType title should exist", () => { + expect(entries[1].title).toBeDefined(); + }); + + test("ContentType uid should match requested content type", () => { + expect(entries[1].uid).toBe(contentTypes.source); + }); + + test("Count should be present in the resultset", () => { + expect(entries[2]).toBeTruthy(); + }); + }); + }); + + describe("Localization Tests", () => { + describe("find: without fallback", () => { + let entries; + const _in = ["ja-jp"]; + + beforeAll(async () => { + try { + entries = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should have the correct locale", () => { + if (entries && entries[0].length) { + const allHaveCorrectLocale = entries[0].every((entry) => + _in.includes(entry.publish_details.locale) + ); + expect(allHaveCorrectLocale).toBe(true); + } + }); + }); + + describe("find: with fallback", () => { + let entries; + const _in = ["ja-jp", "en-us"]; + + beforeAll(async () => { + try { + entries = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .includeFallback() + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should have locale from the allowed fallback list", () => { + if (entries && entries[0].length) { + const allHaveCorrectLocale = entries[0].every((entry) => + _in.includes(entry.publish_details.locale) + ); + expect(allHaveCorrectLocale).toBe(true); + } + }); + }); + }); + + describe("Global Field Tests", () => { + describe(".getContentTypes()", () => { + let entries; + + beforeAll(async () => { + try { + entries = await Stack.getContentTypes({ + include_global_field_schema: true, }); - assert.equal(flag, true, 'all the present reference are included'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".includeReference() - Array"); - assert.end(); - }); -}); - -// includeCount -test('.includeCount()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeCount() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".includeCount()"); - assert.end(); - }); -}); - -// includeSchema -test('.includeSchema()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'Schema present in the resultset'); - for(var i=0; i { + for (var i = 0; i < entries.content_types[0].schema.length; i++) { + if ( + entries.content_types[0].schema[i].data_type === "global_field" + ) { + expect(entries[1]["schema"][i]["schema"]).toBeDefined(); } - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".includeSchema()"); - assert.end(); - }); -}); - -// includeReferenceContenttypeUid with an object -test('.includeReferenceContenttypeUid()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .includeReferenceContentTypeUID() - .toJSON() - .find() - .then(function success(entries) { - for(var i=0; i { + describe(".only() - Single String Parameter", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only("title").toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should contain only title and uid fields", () => { + const allHaveCorrectFields = entries[0].every( + (entry) => + Object.keys(entry).length === 2 && + "title" in entry && + "uid" in entry + ); + expect(allHaveCorrectFields).toBe(true); + }); + }); + + describe(".only() - Multiple String Parameter", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only("BASE", "title").toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should contain only title and uid fields", () => { + const allHaveCorrectFields = entries[0].every( + (entry) => + Object.keys(entry).length === 2 && + "title" in entry && + "uid" in entry + ); + expect(allHaveCorrectFields).toBe(true); + }); + }); + + describe(".only() - Array Parameter", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only(["title", "url"]).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should contain only title, url, and uid fields", () => { + const allHaveCorrectFields = entries[0].every( + (entry) => + Object.keys(entry).length === 3 && + "title" in entry && + "url" in entry && + "uid" in entry + ); + expect(allHaveCorrectFields).toBe(true); + }); + }); + + describe(".only() - For the reference - String", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .only("reference", "title") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should contain reference field", () => { + const allHaveReference = entries[0].every( + (entry) => "reference" in entry + ); + expect(allHaveReference).toBe(true); + }); + }); + + describe(".only() - For the reference - Array", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .only("reference", ["title"]) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should contain reference field", () => { + const allHaveReference = entries[0].every( + (entry) => "reference" in entry + ); + expect(allHaveReference).toBe(true); + }); + }); + }); + + describe("Field Exclusion Tests", () => { + describe(".except() - Single String Parameter", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except("title").toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should not have title field", () => { + const allExcluded = entries[0].every( + (entry) => entry && !("title" in entry) + ); + expect(allExcluded).toBe(true); + }); + }); + + describe(".except() - Multiple String Parameter", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except("BASE", "title").toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should not have title field", () => { + const allExcluded = entries[0].every( + (entry) => entry && !("title" in entry) + ); + expect(allExcluded).toBe(true); + }); + }); + + describe(".except() - Array of String Parameter", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except(["title", "file"]).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should not have title and file fields", () => { + const allExcluded = entries[0].every( + (entry) => entry && !("title" in entry) && !("file" in entry) + ); + expect(allExcluded).toBe(true); + }); + }); + + describe(".except() - For the reference - String", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .except("reference", "title") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should have reference field", () => { + const allHaveReference = entries[0].every( + (entry) => entry && "reference" in entry + ); + expect(allHaveReference).toBe(true); + }); + + test("All entries should have uid field", () => { + const allHaveUID = entries[0].every( + (entry) => entry && "uid" in entry + ); + expect(allHaveUID).toBe(true); + }); + + test("All references should not have title field", () => { + let allReferencesExcluded = true; + + entries[0].forEach((entry) => { + if ( + entry && + entry.reference && + typeof entry.reference === "object" + ) { + entry.reference.forEach((reference) => { + if (reference && "title" in reference) { + allReferencesExcluded = false; } + }); } - }, function error(err) { - console.error("error :", err); - assert.fail(".includeSchema()"); - assert.end(); - }); -}); - - -// includeReferenceContenttypeUid with string -test('.includeReferenceContenttypeUid()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .includeReferenceContentTypeUID() - .toJSON() - .find() - .then(function success(entries) { - for(var i=0; i { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .except("reference", ["title"]) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("All entries should have reference field", () => { + const allHaveReference = entries[0].every( + (entry) => entry && "reference" in entry + ); + expect(allHaveReference).toBe(true); + }); + + test("All entries should have uid field", () => { + const allHaveUID = entries[0].every( + (entry) => entry && "uid" in entry + ); + expect(allHaveUID).toBe(true); + }); + + test("All references should not have title field", () => { + let allReferencesExcluded = true; + + entries[0].forEach((entry) => { + if ( + entry && + entry.reference && + typeof entry.reference === "object" + ) { + entry.reference.forEach((reference) => { + if (reference && "title" in reference) { + allReferencesExcluded = false; } + }); } - }, function error(err) { - console.error("error :", err); - assert.fail(".includeReferenceContenttypeUid()"); - assert.end(); - }); -}); - -// includeCount && includeSchema -test('.includeCount() and .includeSchema()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeCount() - .includeSchema() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1].length, 'Schema present in the resultset'); - assert.ok(entries[2], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeSchema()"); - assert.end(); - }); -}); - -// includeContentType -test('.includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".includeContentType()"); - assert.end(); - }); -}); - -// includeCount && includeContentType -test('.includeCount() and .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeCount() - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - assert.ok(entries[2], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeCount && includeContentType"); - assert.end(); - }); -}); - -// includeSchema && includeContentType -test('.includeSchema() and .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeCount && includeContentType"); - assert.end(); - }); -}); - -// includeCount, includeSchema && includeContentType -test('.includeSchema() and .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeCount() - .includeSchema() - .includeContentType() - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published."); - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.ok(entries[1], 'ContentType present in the resultset'); - assert.ok(entries[1]['title'], 'ContentType title exists'); - assert.ok((entries[1]['uid'] === contentTypes.source), 'ContentType uid is same as requested'); - assert.ok(entries[2], 'Count present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(".includeCount && includeContentType"); - assert.end(); - }); -}); - -// only -test('.only() - Single String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only('title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry); - }); - assert.ok(flag, 'entries with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".only() - Single String Parameter"); - assert.end(); - }); -}); - -test('.only() - Multiple String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only('BASE', 'title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry); - }); - assert.ok(flag, 'entries with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".only() - Multiple String Parameter"); - assert.end(); - }); -}); - -test('.only() - Array Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only(['title', 'url']) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && Object.keys(entry).length === 3 && "title" in entry && "url" in entry && "uid" in entry); - }); - assert.ok(flag, 'entries with the field title,url in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".only() - Array Parameter"); - assert.end(); - }); -}); - -test('.only() - For the reference - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .only('reference', 'title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".only() - For the reference - String"); - assert.end(); - }); -}); - -test('.only() - For the reference - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .only('reference', ['title']) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".only() - For the reference - Array"); - assert.end(); - }); -}); - -// except -test('.except() - Single String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except('title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && !("title" in entry)); - }); - assert.ok(flag, 'entries without the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".except() - Single String Parameter"); - assert.end(); - }); -}); - -test('.except() - Multiple String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except('BASE', 'title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && !("title" in entry)); - }); - assert.ok(flag, 'entries without the field title, url in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".except() - Multiple String Parameter"); - assert.end(); - }); -}); - -test('.except() - Array of String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except(['title', 'file']) - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - return (entry && !("title" in entry) && !("file" in entry)); - }); - assert.ok(flag, 'entries without the field title, file in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".except() - Array of String Parameter"); - assert.end(); - }); -}); - -test('.except() - For the reference - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .except('reference', 'title') - .toJSON() - .find() - .then(function success(entries) { - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - var _flag; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - _flag = true; - _flag = entry.reference.every(function(reference) { - return (reference && !("title" in reference)); - }); - } else { - _flag = true; - } - return (_flag && entry && (Object.keys(entry).length === 3 || Object.keys(entry).length === 2) && "reference" in entry && "uid" in entry); - }); - assert.ok(flag, 'entries with the field reference without title field in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".except() - For the reference - String"); - assert.end(); - }); -}); - -test('.except() - For the reference - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .except('reference', ['title']) - .toJSON() - .find() - .then(function success(entries) { - - // assert.ok("entries" in result, 'Entries key present in the resultset'); - var flag = entries[0].every(function(entry) { - var _flag; - - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - _flag = true; - _flag = entry.reference.every(function(reference) { - return (reference && !("title" in reference)); - }); - } else { - _flag = true; - } - return (_flag && entry && (Object.keys(entry).length === 3 || Object.keys(entry).length === 2) && "reference" in entry && "uid" in entry); - }); - assert.ok(flag, 'entries with the field reference without title field in the resultset'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail(".except() - For the reference - Array"); - assert.end(); - }); -}); - -// Taxonomies Endpoint -test('Taxonomies Endpoint: Get Entries With One Term', function(assert) { - let Query = Stack.Taxonomies(); - Query - .where('taxonomies.one', 'term_one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With One Term"); - assert.end(); - }) -}); - -test('Taxonomies Endpoint: Get Entries With Any Term ($in)', function(assert) { - let Query = Stack.Taxonomies(); - Query - .containedIn('taxonomies.one', ['term_one', 'term_two']) - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With Any Term ($in)"); - assert.end(); - }) -}) - -test('Taxonomies Endpoint: Get Entries With Any Term ($or)', function(assert) { - let Query = Stack.Taxonomies(); - let Query1 = Stack.Taxonomies().where('taxonomies.one', 'term_one'); - let Query2 = Stack.Taxonomies().where('taxonomies.two', 'term_two'); - Query - .or(Query1, Query2) - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With Any Term ($or)"); - assert.end(); - }) -}) - -test('Taxonomies Endpoint: Get Entries With All Terms ($and)', function(assert) { - let Query1 = Stack.Taxonomies().where('taxonomies.one', 'term_one'); - let Query2 = Stack.Taxonomies().where('taxonomies.two', 'term_two'); - let Query = Stack.Taxonomies(); - Query - .and(Query1, Query2) - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With All Terms ($and)"); - assert.end(); - }) -}) - -test('Taxonomies Endpoint: Get Entries With Any Taxonomy Terms ($exists)', function(assert) { - let Query = Stack.Taxonomies(); - Query - .exists('taxonomies.one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With Any Taxonomy Terms ($exists)"); - assert.end(); - }) -}) - -test('Taxonomies Endpoint: Get Entries With Taxonomy Terms and Also Matching Its Children Term ($eq_below, level)', function(assert) { - let Query = Stack.Taxonomies(); - Query - .equalAndBelow('taxonomies.one', 'term_one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With Taxonomy Terms and Also Matching Its Children Term ($eq_below, level)"); - assert.end(); - }) -}) - -test('Taxonomies Endpoint: Get Entries With Taxonomy Terms Children\'s and Excluding the term itself ($below, level)', function(assert) { - let Query = Stack.Taxonomies(); - Query - .below('taxonomies.one', 'term_one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With Taxonomy Terms Children\'s and Excluding the term itself ($below, level)"); - assert.end(); - }) -}) - -test('Taxonomies Endpoint: Get Entries With Taxonomy Terms and Also Matching Its Parent Term ($eq_above, level)', function(assert) { - let Query = Stack.Taxonomies(); - Query - .equalAndAbove('taxonomies.one', 'term_one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With Taxonomy Terms and Also Matching Its Parent Term ($eq_above, level)"); - assert.end(); - }) -}) - -test('Taxonomies Endpoint: Get Entries With Taxonomy Terms Parent and Excluding the term itself ($above, level)', function(assert) { - let Query = Stack.Taxonomies(); - Query - .above('taxonomies.one', 'term_one_child') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Taxonomies Endpoint: Get Entries With Taxonomy Terms Parent and Excluding the term itself ($above, level)"); - assert.end(); - }) -}) - -//Content Type end point -test('CT Taxonomies Query: Get Entries With One Term', function(assert) { - let Query = Stack.ContentType('source').Query(); - Query - .where('taxonomies.one', 'term_one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With One Term"); - assert.end(); - }) -}); - -test('CT Taxonomies Query: Get Entries With Any Term ($in)', function(assert) { - let Query = Stack.ContentType('source').Query(); - Query - .containedIn('taxonomies.one', ['term_one', 'term_two']) - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With Any Term ($in)"); - assert.end(); - }) -}) - -test('CT Taxonomies Query: Get Entries With Any Term ($or)', function(assert) { - let Query = Stack.ContentType('source').Query(); - let Query1 = Stack.ContentType('source').Query().where('taxonomies.one', 'term_one'); - let Query2 = Stack.ContentType('source').Query().where('taxonomies.two', 'term_two'); - Query - .or(Query1, Query2) - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With Any Term ($or)"); - assert.end(); - }) -}) - -test('CT Taxonomies Query: Get Entries With All Terms ($and)', function(assert) { - let Query1 = Stack.ContentType('source').Query().where('taxonomies.one', 'term_one'); - let Query2 = Stack.ContentType('source').Query().where('taxonomies.two', 'term_two'); - let Query = Stack.ContentType('source').Query(); - Query - .and(Query1, Query2) - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With All Terms ($and)"); - assert.end(); - }) -}) - -test('CT Taxonomies Query: Get Entries With Any Taxonomy Terms ($exists)', function(assert) { - let Query = Stack.ContentType('source').Query(); - Query - .exists('taxonomies.one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With Any Taxonomy Terms ($exists)"); - assert.end(); - }) -}) - -test('CT Taxonomies Query: Get Entries With Taxonomy Terms and Also Matching Its Children Term ($eq_below, level)', function(assert) { - let Query = Stack.ContentType('source').Query(); - Query - .equalAndBelow('taxonomies.one', 'term_one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With Taxonomy Terms and Also Matching Its Children Term ($eq_below, level)"); - assert.end(); - }) -}) - -test('CT Taxonomies Query: Get Entries With Taxonomy Terms Children\'s and Excluding the term itself ($below, level)', function(assert) { - let Query = Stack.ContentType('source').Query(); - Query - .below('taxonomies.one', 'term_one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With Taxonomy Terms Children\'s and Excluding the term itself ($below, level)"); - assert.end(); - }) -}) - -test('CT Taxonomies Query: Get Entries With Taxonomy Terms and Also Matching Its Parent Term ($eq_above, level)', function(assert) { - let Query = Stack.ContentType('source').Query(); - Query - .equalAndAbove('taxonomies.one', 'term_one') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With Taxonomy Terms and Also Matching Its Parent Term ($eq_above, level)"); - assert.end(); - }) -}) - -test('CT Taxonomies Query: Get Entries With Taxonomy Terms Parent and Excluding the term itself ($above, level)', function(assert) { - let Query = Stack.ContentType('source').Query(); - Query - .above('taxonomies.one', 'term_one_child') - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("CT Taxonomies Query: Get Entries With Taxonomy Terms Parent and Excluding the term itself ($above, level)"); - assert.end(); - }) -}) -test('Variants in entry', function (assert) { - let Query = Stack.ContentType('source').Query(); - Query - .variants(['variant_entry_1', 'variant_entry_2']) - .toJSON() - .find() - .then(entries => { - assert.ok(entries[0].length, 'Variant entries present in the resultset'); - assert.end(); - }, err => { - console.error("error :", err); - assert.fail("Variant Entries are not present in the CT"); - assert.end(); - }) + }); + + expect(allReferencesExcluded).toBe(true); + }); + }); + }); + + describe("Taxonomies Endpoint Tests", () => { + describe("Get Entries With One Term", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.Taxonomies(); + entries = await Query.where("taxonomies.one", "term_one") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Any Term ($in)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.Taxonomies(); + entries = await Query.containedIn("taxonomies.one", [ + "term_one", + "term_two", + ]) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Any Term ($or)", () => { + let entries; + + beforeAll(async () => { + try { + const Query1 = Stack.Taxonomies().where( + "taxonomies.one", + "term_one" + ); + const Query2 = Stack.Taxonomies().where( + "taxonomies.two", + "term_two" + ); + const Query = Stack.Taxonomies(); + + entries = await Query.or(Query1, Query2).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With All Terms ($and)", () => { + let entries; + + beforeAll(async () => { + try { + const Query1 = Stack.Taxonomies().where( + "taxonomies.one", + "term_one" + ); + const Query2 = Stack.Taxonomies().where( + "taxonomies.two", + "term_two" + ); + const Query = Stack.Taxonomies(); + + entries = await Query.and(Query1, Query2).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Any Taxonomy Terms ($exists)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.Taxonomies(); + entries = await Query.exists("taxonomies.one").toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + }); + + describe("Content Type Taxonomies Query Tests", () => { + describe("Get Entries With One Term", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("source").Query(); + entries = await Query.where("taxonomies.one", "term_one") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Any Term ($in)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("source").Query(); + entries = await Query.containedIn("taxonomies.one", [ + "term_one", + "term_two", + ]) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Any Term ($or)", () => { + let entries; + + beforeAll(async () => { + try { + const Query1 = Stack.ContentType("source") + .Query() + .where("taxonomies.one", "term_one"); + const Query2 = Stack.ContentType("source") + .Query() + .where("taxonomies.two", "term_two"); + const Query = Stack.ContentType("source").Query(); + + entries = await Query.or(Query1, Query2).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With All Terms ($and)", () => { + let entries; + + beforeAll(async () => { + try { + const Query1 = Stack.ContentType("source") + .Query() + .where("taxonomies.one", "term_one"); + const Query2 = Stack.ContentType("source") + .Query() + .where("taxonomies.two", "term_two"); + const Query = Stack.ContentType("source").Query(); + + entries = await Query.and(Query1, Query2).toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Any Taxonomy Terms ($exists)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("source").Query(); + entries = await Query.exists("taxonomies.one").toJSON().find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Taxonomy Terms and Also Matching Its Children Term ($eq_below, level)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("source").Query(); + entries = await Query.equalAndBelow("taxonomies.one", "term_one") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Taxonomy Terms Children's and Excluding the term itself ($below, level)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("source").Query(); + entries = await Query.below("taxonomies.one", "term_one") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Taxonomy Terms and Also Matching Its Parent Term ($eq_above, level)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("source").Query(); + entries = await Query.equalAndAbove("taxonomies.one", "term_one") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + + describe("Get Entries With Taxonomy Terms Parent and Excluding the term itself ($above, level)", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("source").Query(); + entries = await Query.above("taxonomies.one", "term_one_child") + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + }); + describe("Variants Tests", () => { + describe("Variants in entry", () => { + let entries; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("source").Query(); + entries = await Query.variants([ + "variant_entry_1", + "variant_entry_2", + ]) + .toJSON() + .find(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test("Should return variant entries in the resultset", () => { + expect(entries[0].length).toBeTruthy(); + }); + }); + }); + }); }); \ No newline at end of file diff --git a/test/entry/findone-result-wrapper.js b/test/entry/findone-result-wrapper.js index 1ff2171a..8f638951 100755 --- a/test/entry/findone-result-wrapper.js +++ b/test/entry/findone-result-wrapper.js @@ -2,7 +2,6 @@ /* * Module Dependencies. */ -const test = require('tape'); const Contentstack = require('../../dist/node/contentstack.js'); const Utils = require('./utils.js'); const init = require('../config.js'); @@ -10,769 +9,1056 @@ const init = require('../config.js'); const contentTypes = init.contentTypes; let Stack; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); - -test('findOne: default .findOne()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - Query - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: default .findOne()"); - assert.end(); - }); -}); - -/*! - * SORTING - * !*/ -test('findOne: .ascending()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - - Query - .ascending(field) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .ascending()"); - assert.end(); - }); -}); - -test('findOne: .descending()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'created_at'; - - Query - .descending(field) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .descending()"); - assert.end(); - }); -}); - - -/*! - * COMPARISION - * !*/ -test('findOne: .lessThan()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - Query - .lessThan(field, value) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry[field] < value), 'Entry num_field having value less than ' + value + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .lessThan()"); - assert.end(); - }); -}); - -test('findOne: .lessThanOrEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - Query - .lessThanOrEqualTo(field, value) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry[field] <= value), 'Entry num_field having value less than or equal to ' + value + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .lessThanOrEqualTo()"); - assert.end(); - }); -}); - -test('findOne: .greaterThan()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 6; - - Query - .greaterThan(field, value) - .ascending(field) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry[field] > value), 'Entry num_field having value greater than ' + value + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .greaterThan()"); - assert.end(); - }); -}); - -test('findOne: .greaterThanOrEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - - Query - .greaterThanOrEqualTo(field, value) - .descending(field) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry[field] >= value), 'Entry num_field having value greater than ' + value + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .greaterThanOrEqualTo()"); - assert.end(); - }); -}); - -test('findOne: .notEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 6; - - Query - .notEqualTo(field, value) - .descending(field) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry[field] !== value), 'Entry num_field having value is not equal to ' + value + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .notEqualTo()"); - assert.end(); - }); -}); - - -/*! - * Array/Subset - * !*/ - -test('findOne: .containedIn()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - _in = ["source1", "source2"]; - - Query - .containedIn('title', _in) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry['title'] && ~_in.indexOf(entry['title'])), 'Entry title exists from the available options ' + _in.join(', ') + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .containedIn()"); - assert.end(); - }); -}); - -test('findOne: .notContainedIn()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - _in = ["source1"]; - - Query - .notContainedIn('title', _in) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry['title'] && _in.indexOf(entry['title']) === -1), 'Entry title not exists from the available options ' + _in.join(', ') + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("findOne: .notContainedIn() :", err); - assert.deepEqual(err, { error_code: 141, error_message: 'The requested entry doesn\'t exist.' }, "No entry found"); - assert.end(); - }); -}); - - -/*! - *Element(exists) - * !*/ - -test('findOne: .exists()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - queryField = "boolean"; - - Query - .exists(queryField) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && typeof entry[queryField] !== 'undefined'), 'Entry having the ' + queryField + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .exists()"); - assert.end(); - }); -}); - -test('findOne: .notExists()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - queryField = "isspecial"; - - Query - .notExists(queryField) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && typeof entry[queryField] === 'undefined'), 'Entry having the ' + queryField + '.'); - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("findOne: .notExists():", err); - assert.deepEqual(err, { error_code: 141, error_message: 'The requested entry doesn\'t exist.' }, "No entry found"); - assert.end(); - }); -}); - - -// Pagination -test('findOne: .skip()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .toJSON() - .find() - .then(function success(allEntries) { - assert.ok(allEntries.length, 'entry key present in the resultset'); - Stack - .ContentType(contentTypes.source) - .Query() - .skip(1) - .toJSON() - .findOne() - .then(function result(entry) { - assert.deepEqual(allEntries[0][1], entry, 'Element matched.'); - assert.end(); - }, function error(err) { - console.error("error :", err); - assert.fail("findOne: .skip()"); - assert.end(); - }); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .skip()"); - assert.end(); - }); -}); - - - -// Logical -test('findOne: .or() - Query Objects', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1']); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', 'false'); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .or(Query1, Query2) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok((entry && entry['uid'] && entry['locale'] && entry['publish_details']), 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .or() - Query Objects"); - assert.end(); - }); -}); - -test('findOne: .and() - Query Objects', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1']); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .and(Query1, Query2) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok(entry && entry.uid && entry.locale && entry.publish_details, 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .and() - Query Objects"); - assert.end(); - }); -}); - - - -// Custom query -test('findOne: .query() - Raw query', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .query({ "$or": [{ "title": "source1" }, { "boolean": "false" }] }) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok(entry && entry.uid && entry.locale && entry.publish_details, 'Entry should have uid, publish_details, locale.'); - assert.ok(~(entry.title === 'source1' || entry.boolean === true), '$OR condition satisfied'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .query() - Raw query"); - assert.end(); - }); -}); - - -// tags -test('findOne: .tags()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - tags = ["tag1", "tag2"]; - - Query - .tags(tags) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok(entry && entry.uid && entry.locale && entry.publish_details, 'Entry should have uid, publish_details, locale.'); - assert.equal((Utils.arrayPresentInArray(tags, entry.tags) > 0), true, 'Tags specified are found in result set'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .tags()"); - assert.end(); - }); -}); - - -// search -test('findOne: .search()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .search('source1') - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok(entry && entry.uid && entry.locale && entry.publish_details, 'Entry should have uid, publish_details, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .search()"); - assert.end(); - }); -}); - - -// search -test('findOne: .regex()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'title', - regex = { - pattern: '^source', - options: 'i' - }; - - Query - .regex(field, regex.pattern, regex.options) - .toJSON() - .findOne() - .then(function success(entry) { - assert.ok(entry && entry.uid && entry.locale && entry.publish_details, 'Entry should have uid, publish_details, locale.'); - assert.ok((new RegExp(regex.pattern, regex.options).test(entry[field])), "regexp satisfied"); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .regex()"); - assert.end(); - }); -}); - - -test('findOne: without fallback', function(assert) { - var _in = ['ja-jp'] - Stack.ContentType(contentTypes.source).Query().language('ja-jp') - .toJSON() - .findOne() - .then((entry) => { - var _entries = (_in.indexOf(entry['publish_details']['locale']) != -1); - assert.equal(_entries, true, "Publish content fallback"); - assert.end(); - }).catch((error) => { - assert.fail("Entries default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -test('findOne: fallback', function(assert) { - var _in = ['ja-jp', 'en-us'] - Stack.ContentType(contentTypes.source).Query().language('ja-jp') - .includeFallback() - .toJSON() - .findOne() - .then((entry) => { - var _entries = (_in.indexOf(entry['publish_details']['locale']) != -1); - assert.equal(_entries, true, "Publish content fallback"); - assert.end(); - }).catch((error) => { - assert.fail("Entries default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -// includeReference -test('findOne: .includeReference() - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .toJSON() - .findOne() - .then(function success(entry) { - assert.equal((entry && entry['reference'] && typeof entry['reference'] === 'object'), true, 'all the present reference are included'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .includeReference() - String"); - assert.end(); - }); -}); - -test('findOne: .includeReference() - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference(['reference', 'other_reference']) - .toJSON() - .findOne() - .then(function success(entry) { - assert.equal((entry && entry.reference && typeof entry.reference === 'object' && entry.other_reference && typeof entry.other_reference === 'object'), true, 'all the present reference and other reference are included'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .includeReference() - Array"); - assert.end(); - }); -}); - - -// includeSchema -test('findOne: .includeSchema()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .toJSON() - .findOne() - .then(function success(entry, schema) { - // console.log("result : ", Object.keys(result || {})); - assert.ok(entry, 'entry present in the resultset'); - //assert.ok(schema, 'Schema is not present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .includeSchema()"); - assert.end(); - }); -}); - -// includeContentType -test('findOne: .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeContentType() - .toJSON() - .findOne() - .then(function success(entry, contentType) { - // console.log("result : ", entry, contentType); - assert.ok(entry, 'entry present in the resultset'); - assert.ok((typeof contentType === "undefined"), 'ContentType is not present.'); - // assert.ok((contentType.uid === "source"), 'ContentType is title matched.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .includeContentType()"); - assert.end(); - }); -}); - -// includeSchema & includeContentType -test('findOne: includeSchema & .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .includeContentType() - .toJSON() - .findOne() - .then(function success(entry, contentType) { - // console.log("result : ", entry, contentType); - assert.ok(entry, 'entry present in the resultset'); - assert.ok((typeof contentType === "undefined"), 'ContentType is not present.'); - // assert.ok((contentType.uid === "source"), 'ContentType is title matched.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: includeSchema & .includeContentType()"); - assert.end(); - }); -}); - -// only -test('findOne: .only() - Single String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only('title') - .toJSON() - .findOne() - .then(function success(entry) { - var flag = (entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry); - assert.ok(flag, 'entry with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - Single String Parameter"); - assert.end(); - }); -}); - -test('findOne: .only() - Multiple String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only('BASE', 'title') - .toJSON() - .findOne() - .then(function success(entry) { - var flag = (entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry); - assert.ok(flag, 'entry with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - Multiple String Parameter"); - assert.end(); + +describe('FindOne Tests', () => { + // Setup - Initialize the Contentstack Stack Instance + beforeAll((done) => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(done, 1000); + }); + + describe('Default FindOne', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + // SORTING TESTS + describe('Sorting', () => { + describe('Ascending', () => { + let entry; + let error = null; + const field = 'updated_at'; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.ascending(field).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + describe('Descending', () => { + let entry; + let error = null; + const field = 'created_at'; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.descending(field).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + }); + + // COMPARISON TESTS + describe('Comparison', () => { + describe('lessThan', () => { + let entry; + let error = null; + const field = 'num_field'; + const value = 11; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); + entry = await Query.lessThan(field, value).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + + test('num_field should be less than specified value', () => { + expect(entry[field]).toBeLessThan(value); + }); + }); + + describe('lessThanOrEqualTo', () => { + let entry; + let error = null; + const field = 'num_field'; + const value = 11; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); + entry = await Query.lessThanOrEqualTo(field, value).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + test('num_field should be less than or equal to specified value', () => { + expect(entry[field]).toBeLessThanOrEqual(value); + }); + }); + + describe('greaterThan', () => { + let entry; + let error = null; + const field = 'num_field'; + const value = 6; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); + entry = await Query.greaterThan(field, value).ascending(field).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + + test('num_field should be greater than specified value', () => { + expect(entry[field]).toBeGreaterThan(value); + }); + }); + + describe('greaterThanOrEqualTo', () => { + let entry; + let error = null; + const field = 'num_field'; + const value = 11; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); + entry = await Query.greaterThanOrEqualTo(field, value).descending(field).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + + test('num_field should be greater than or equal to specified value', () => { + expect(entry[field]).toBeGreaterThanOrEqual(value); + }); + }); + + describe('notEqualTo', () => { + let entry; + let error = null; + const field = 'num_field'; + const value = 6; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); + entry = await Query.notEqualTo(field, value).descending(field).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('num_field should not be equal to specified value', () => { + expect(entry[field]).not.toBe(value); + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + }); + + // ARRAY/SUBSET TESTS + describe('Array/Subset', () => { + describe('containedIn', () => { + let entry; + let error = null; + const _in = ["source1", "source2"]; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.containedIn('title', _in).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Entry title should be in the specified values', () => { + expect(_in).toContain(entry.title); + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + describe('notContainedIn', () => { + let entry; + let error = null; + const _in = ["source1"]; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.notContainedIn('title', _in).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should either return an entry with matching criteria or an expected error', () => { + if (entry) { + expect(entry.title).toBeDefined(); + expect(_in).not.toContain(entry.title); + } else { + expect(error).toEqual({ + error_code: 141, + error_message: 'The requested entry doesn\'t exist.' + }); + } + }); + + test('If entry exists, it should have uid', () => { + if (entry) { + expect(entry.uid).toBeDefined(); + } + }); + + test('If entry exists, it should have locale', () => { + if (entry) { + expect(entry.locale).toBeDefined(); + } + }); + + test('If entry exists, it should have publish_details', () => { + if (entry) { + expect(entry.publish_details).toBeDefined(); + } + }); + }); + }); + + // ELEMENT EXISTS TESTS + describe('Element Existence', () => { + describe('exists', () => { + let entry; + let error = null; + const queryField = "boolean"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.exists(queryField).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Entry should have the queried field', () => { + expect(typeof entry[queryField]).not.toBe('undefined'); + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + describe('notExists', () => { + let entry; + let error = null; + const queryField = "isspecial"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.notExists(queryField).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should handle either success or error case', () => { + if (entry) { + expect(typeof entry[queryField]).toBe('undefined'); + } else { + expect(error).toEqual({ + error_code: 141, + error_message: 'The requested entry doesn\'t exist.' + }); + } + }); + + test('If entry exists, it should have uid', () => { + if (entry) { + expect(entry.uid).toBeDefined(); + } + }); + + test('If entry exists, it should have locale', () => { + if (entry) { + expect(entry.locale).toBeDefined(); + } + }); + + test('If entry exists, it should have publish_details', () => { + if (entry) { + expect(entry.publish_details).toBeDefined(); + } + }); + }); + }); + describe('Pagination', () => { + describe('skip', () => { + let allEntries; + let skippedEntry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + allEntries = await Query.toJSON().find(); + + const skipQuery = Stack.ContentType(contentTypes.source).Query(); + skippedEntry = await skipQuery.skip(1).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should have entries in the result set', () => { + expect(allEntries.length).toBeTruthy(); + }); + + test('Should get correct skipped entry', () => { + expect(skippedEntry).toEqual(allEntries[0][1]); + }); + }); + }); + + describe('Logical Operations', () => { + describe('OR Query Objects', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1']); + const Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', 'false'); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entry = await Query.or(Query1, Query2).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + describe('AND Query Objects', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1']); + const Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entry = await Query.and(Query1, Query2).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + describe('Raw Query', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .query({ "$or": [{ "title": "source1" }, { "boolean": "false" }] }) + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Entry should satisfy OR condition', () => { + expect(entry.title === 'source1' || entry.boolean === false).toBeTruthy(); + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + }); + + describe('Tags', () => { + let entry; + let error = null; + const tags = ["tag1", "tag2"]; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.tags(tags).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Tags specified should be found in the result', () => { + expect(Utils.arrayPresentInArray(tags, entry.tags) > 0).toBe(true); + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + describe('Search', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.search('source1').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + describe('Regex', () => { + let entry; + let error = null; + const field = 'title'; + const regex = { + pattern: '^source', + options: 'i' + }; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.regex(field, regex.pattern, regex.options).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Entry field should match the regex pattern', () => { + const regExp = new RegExp(regex.pattern, regex.options); + expect(regExp.test(entry[field])).toBe(true); + }); + + test('Should return an entry with uid, locale, publish_details', () => { + expect(entry).toBeDefined(); + expect(entry['uid']).toBeDefined(); + expect(entry['locale']).toBeDefined(); + expect(entry['publish_details']).toBeDefined(); + }); + }); + + describe('Localization', () => { + describe('Without Fallback', () => { + let entry; + let error = null; + const _in = ['ja-jp']; + + beforeAll(async () => { + try { + entry = await Stack.ContentType(contentTypes.source) + .Query() + .language('ja-jp') + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should have correct locale in publish_details', () => { + expect(_in).toContain(entry.publish_details.locale); + }); + }); + + describe('With Fallback', () => { + let entry; + let error = null; + const _in = ['ja-jp', 'en-us']; + + beforeAll(async () => { + try { + entry = await Stack.ContentType(contentTypes.source) + .Query() + .language('ja-jp') + .includeFallback() + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should have locale from allowed fallback list', () => { + expect(_in).toContain(entry.publish_details.locale); + }); + }); + }); + describe('Including References', () => { + describe('includeReference - String', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference('reference').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('All present references should be included as objects', () => { + expect(entry && entry['reference'] && typeof entry['reference'] === 'object').toBe(true); + }); + }); + + describe('includeReference - Array', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference(['reference', 'other_reference']).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('All present references should be included as objects', () => { + const condition = ( + entry && + entry['reference'] && + typeof entry['reference'] === 'object' && + entry.other_reference && + typeof entry.other_reference === 'object' + ); + expect(condition).toBe(true); + }); + }); + }); + + describe('Including Schema', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeSchema().toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + }); + + describe('Including ContentType', () => { + let entry; + let contentType; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + [entry, contentType] = await new Promise((resolve, reject) => { + Query.includeContentType() + .toJSON() + .findOne() + .then((entry, contentType) => resolve([entry, contentType]), reject); }); -}); - -test('findOne: .only() - Array Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only(['title', 'url']) - .toJSON() - .findOne() - .then(function success(entry) { - var flag = (entry && Object.keys(entry).length === 3 && "title" in entry && "uid" in entry && "url" in entry); - assert.ok(flag, 'entry with the field title,url in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - Array Parameter"); - assert.end(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('ContentType should not be present', () => { + expect(typeof contentType).toBe("undefined"); + }); + }); + + describe('Including Schema and ContentType', () => { + let entry; + let contentType; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + [entry, contentType] = await new Promise((resolve, reject) => { + Query.includeSchema() + .includeContentType() + .toJSON() + .findOne() + .then((entry, contentType) => resolve([entry, contentType]), reject); }); -}); - -test('findOne: .only() - For the reference - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', 'reference') - .only('reference', 'title') - .toJSON() - .findOne() - .then(function success(entry) { - var flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry['reference'].every(function(reference) { - return (reference && "title" in reference && "uid" in reference); - }); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('ContentType should not be present', () => { + expect(typeof contentType).toBe("undefined"); + }); + }); + + describe('Field Selection - Only', () => { + describe('only - Single String Parameter', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only('title').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should only contain title and uid fields', () => { + expect(Object.keys(entry).length).toBe(2); + expect(entry).toHaveProperty('title'); + expect(entry).toHaveProperty('uid'); + }); + }); + + describe('only - Multiple String Parameters', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only('BASE', 'title').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should only contain title and uid fields', () => { + expect(Object.keys(entry).length).toBe(2); + expect(entry).toHaveProperty('title'); + expect(entry).toHaveProperty('uid'); + }); + }); + + describe('only - Array Parameter', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only(['title', 'url']).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should contain title, url, and uid fields', () => { + expect(Object.keys(entry).length).toBe(3); + expect(entry).toHaveProperty('title'); + expect(entry).toHaveProperty('url'); + expect(entry).toHaveProperty('uid'); + }); + }); + + describe('only - For reference - String', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .includeReference('reference') + .only('BASE', 'reference') + .only('reference', 'title') + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Reference fields should be properly filtered', () => { + let hasProperReferences = false; + if (entry && entry['reference'] && typeof entry['reference'] === 'object') { + hasProperReferences = entry['reference'].every(ref => + ref && "title" in ref && "uid" in ref); + } else { + hasProperReferences = true; // No references or empty references is valid + } + expect(hasProperReferences).toBe(true); + }); + }); + + describe('only - For reference - Array', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .includeReference('reference') + .only('BASE', ['reference']) + .only('reference', ['title']) + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('References should have only specified fields', () => { + let hasProperReferences = false; + if (entry && entry['reference']) { + if (Array.isArray(entry['reference'])) { + if (entry['reference'].length === 0) { + hasProperReferences = true; } else { - flag = true + hasProperReferences = entry['reference'].every(ref => + ref && "title" in ref && "uid" in ref); } - assert.equal(flag, true, 'Entry has the reference with only paramteres.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - For the reference - String"); - assert.end(); - }); -}); - -test('findOne: .only() - For the reference - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .only('reference', ['title']) - .toJSON() - .findOne() - .then(function success(entry) { - var flag = false; - if (entry && entry['reference']) { - if (entry['reference'].length) { - if (entry['reference'].length === 0){ - flag = true - } else { - flag = entry['reference'].every(function(reference) { - return (reference && "title" in reference && "uid" in reference); - }); - } - } else { - flag = true - } - } else { - flag = true - } - assert.equal(flag, true, 'Entry do not have the reference with only paramteres.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - For the reference - Array"); - assert.end(); - }); -}); - -// except -test('findOne: .except() - Single String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except('title') - .toJSON() - .findOne() - .then(function success(entry) { - var flag = (entry && !("title" in entry)); - assert.ok(flag, 'entry without the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - Single String Parameter"); - assert.end(); - }); -}); - -test('findOne: .except() - Multiple String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except('BASE', 'title') - .toJSON() - .findOne() - .then(function success(entry) { - var flag = (entry && !("title" in entry)); - assert.ok(flag, 'entry without the field title, url in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - Multiple String Parameter"); - assert.end(); - }); -}); - -test('findOne: .except() - Array of String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except(['title', 'url']) - .toJSON() - .findOne() - .then(function success(entry) { - var flag = (entry && !("title" in entry) && !("url" in entry)); - assert.ok(flag, 'entry without the field title, url in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail(""); - assert.end(); - }); -}); - -test('findOne: .except() - For the reference - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', 'reference') - .except('reference', 'title') - .toJSON() - .findOne() - .then(function success(entry) { - var flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry['reference'].every(function(reference) { - return (reference && !("title" in reference)); - }); - } - assert.ok(flag, 'entry with the field reference without title field in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - For the reference - String"); - assert.end(); - }); -}); - -test('findOne: .except() - For the reference - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .except('reference', ['title']) - .toJSON() - .findOne() - .then(function success(entry) { - var flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry['reference'].every(function(reference) { - return (reference && !("title" in reference)); - }); - } - assert.ok(flag, 'entry with the field reference without title field in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - For the reference - Array"); - assert.end(); - }); + } else { + hasProperReferences = true; + } + } else { + hasProperReferences = true; + } + expect(hasProperReferences).toBe(true); + }); + }); + }); + + describe('Field Selection - Except', () => { + describe('except - Single String Parameter', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except('title').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should not contain the excluded field', () => { + expect(entry).not.toHaveProperty('title'); + }); + }); + + describe('except - Multiple String Parameters', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except('BASE', 'title').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should not contain the excluded field', () => { + expect(entry).not.toHaveProperty('title'); + }); + }); + + describe('except - Array of String Parameters', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except(['title', 'url']).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should not contain the first excluded field', () => { + expect(entry).not.toHaveProperty('title'); + }); + + test('Entry should not contain the second excluded field', () => { + expect(entry).not.toHaveProperty('url'); + }); + }); + + describe('except - For the reference - String', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .includeReference('reference') + .only('BASE', 'reference') + .except('reference', 'title') + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('References should not contain the excluded field', () => { + let hasProperExclusions = false; + if (entry && entry['reference'] && typeof entry['reference'] === 'object') { + hasProperExclusions = entry['reference'].every(ref => + ref && !("title" in ref)); + } else { + // No references is valid for this test + hasProperExclusions = true; + } + expect(hasProperExclusions).toBe(true); + }); + }); + + describe('except - For the reference - Array', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .includeReference('reference') + .only('BASE', ['reference']) + .except('reference', ['title']) + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('References should not contain the excluded field', () => { + let hasProperExclusions = false; + if (entry && entry['reference'] && typeof entry['reference'] === 'object') { + hasProperExclusions = entry['reference'].every(ref => + ref && !("title" in ref)); + } else { + hasProperExclusions = true; + } + expect(hasProperExclusions).toBe(true); + }); + }); + }); }); \ No newline at end of file diff --git a/test/entry/findone.js b/test/entry/findone.js index 130d336e..53f649e3 100755 --- a/test/entry/findone.js +++ b/test/entry/findone.js @@ -2,7 +2,6 @@ /* * Module Dependencies. */ -const test = require('tape'); const Contentstack = require('../../dist/node/contentstack.js'); const Utils = require('./utils.js'); const init = require('../config.js'); @@ -10,768 +9,1017 @@ const init = require('../config.js'); const contentTypes = init.contentTypes; let Stack; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); - -test('findOne: default .toJSON().findOne()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - Query - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: default .toJSON().findOne()"); - assert.end(); - }); -}); - -/*! - * SORTING - * !*/ -test('findOne: .ascending()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'created_at'; - - Query - .ascending(field) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .ascending()"); - assert.end(); - }); -}); - -test('findOne: .descending()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'created_at'; - - Query - .descending(field) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .descending()"); - assert.end(); - }); -}); - - -/*! - * COMPARISION - * !*/ -test('findOne: .lessThan()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - value = 11; - Query - .lessThan('num_field', value) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.num_field < value), 'Entry num_field having value less than ' + value + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .lessThan()"); - assert.end(); - }); -}); - -test('findOne: .lessThanOrEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - value = 11; - Query - .lessThanOrEqualTo('num_field', value) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.num_field <= value), 'Entry num_field having value less than or equal to ' + value + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .lessThanOrEqualTo()"); - assert.end(); - }); -}); - -test('findOne: .greaterThan()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - - Query - .greaterThan('num_field', value) - .ascending(field) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry[field] > value), 'Entry num_field having value greater than ' + value + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .greaterThan()"); - assert.end(); - }); -}); - -test('findOne: .greaterThanOrEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 11; - - Query - .greaterThanOrEqualTo('num_field', value) - .descending(field) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry[field] >= value), 'Entry num_field having value greater than ' + value + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error : ", err); - assert.fail("findOne: .greaterThanOrEqualTo()"); - assert.end(); - }); -}); - -test('findOne: .notEqualTo()', function(assert) { - var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(), - field = 'num_field', - value = 6; - - Query - .notEqualTo('num_field', value) - .descending(field) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry[field] !== value), 'Entry num_field having value is not equal to ' + value + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error : ", err); - assert.fail("findOne: .notEqualTo()"); - assert.end(); - }); -}); - - -/*! - * Array/Subset - * !*/ - -test('findOne: .containedIn()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - _in = ["source1", "source2"]; - - Query - .containedIn('title', _in) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.title && ~_in.indexOf(entry.title)), 'Entry title exists from the available options ' + _in.join(', ') + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .containedIn()"); - assert.end(); - }); -}); - -test('findOne: .notContainedIn()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - _in = ["source1", "source2", "source3", "source4"]; - - Query - .notContainedIn('title', _in) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.title && _in.indexOf(entry.title) === -1), 'Entry title not exists from the available options ' + _in.join(', ') + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.deepEqual(err, { error_code: 141, error_message: 'The requested entry doesn\'t exist.' }, "No entry found"); - assert.end(); - }); -}); - - -/*! - *Element(exists) - * !*/ - -test('findOne: .exists()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - queryField = "boolean"; - - Query - .exists(queryField) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && typeof entry[queryField] !== 'undefined'), 'Entry having the ' + queryField + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .exists()"); - assert.end(); - }); -}); - -test('findOne: .notExists()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - queryField = "isspecial"; - - Query - .notExists(queryField) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && typeof entry[queryField] === 'undefined'), 'Entry having the ' + queryField + '.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.deepEqual(err, { error_code: 141, error_message: 'The requested entry doesn\'t exist.' }, "No entry found"); - assert.end(); - }); -}); - - -// Pagination -test('findOne: .skip()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .toJSON().find() - .then(function success(allEntries) { - assert.ok(allEntries.length, 'entry key present in the resultset'); - Stack - .ContentType(contentTypes.source) - .Query() - .skip(1) - .toJSON().findOne() - .then(function result(entry) { - assert.deepEqual(allEntries[0][1], entry, 'Element matched.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .skip()"); - assert.end(); - }); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .skip()"); - assert.end(); - }); -}); - -// Logical -test('findOne: .or() - Query Objects', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1', 'source2']); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .or(Query1, Query2) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && (~(entry.title === 'source1' || entry.boolean === true))), 'Entry satisfies the $OR condition'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .or() - Query Objects"); - assert.end(); - }); -}); - -test('findOne: .and() - Query Objects', function(assert) { - var Query1 = Stack.ContentType(contentTypes.source).Query().where('title', 'source1'); - var Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .and(Query1, Query2) - .toJSON().findOne() - .then(function success(entry) { - assert.ok(~(entry.title === 'source1' && entry.boolean === true), 'Entry satisfies the $AND operation.'); - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .and() - Query Objects"); - assert.end(); - }); -}); - -// Custom query -test('findOne: .query() - Raw query', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .query({ "$or": [{ "title": "source1" }, { "boolean": "false" }] }) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.ok(~(entry.title === 'source1' || entry.boolean === true), '$OR condition satisfied'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .query() - Raw query"); - assert.end(); - }); -}); - - -// tags -test('findOne: .tags()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - tags = ["tag1", "tag2"]; - - Query - .tags(tags) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.equal((Utils.arrayPresentInArray(tags, entry.tags) > 0), true, 'Tags specified are found in result set'); - assert.end(); - }, function error(err) { - console.error("Error :",err); - assert.fail("findOne: .tags()"); - assert.end(); - }); -}); - - -//search -test('findOne: .search()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .search('source1') - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .search()"); - assert.end(); - }); -}); - - -// search -test('findOne: .regex()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'title', - regex = { - pattern: '^source', - options: 'i' - }; - - Query - .regex(field, regex.pattern, regex.options) - .toJSON().findOne() - .then(function success(entry) { - assert.ok((entry && entry.uid && entry.locale && entry.publish_details), 'Entry should have publish_details, uid, locale.'); - assert.ok((new RegExp(regex.pattern, regex.options).test(entry[field])), "regexp satisfied"); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .regex()"); - assert.end(); - }); -}); - -test('findOne: without fallback', function(assert) { - var _in = ['ja-jp'] - Stack.ContentType(contentTypes.source).Query().language('ja-jp') - .toJSON() - .findOne() - .then((entry) => { - var _entries = (_in.indexOf(entry['publish_details']['locale']) != -1); - assert.equal(_entries, true, "Publish content fallback"); - assert.end(); - }).catch((error) => { - assert.fail("Entries default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -test('findOne: fallback', function(assert) { - var _in = ['ja-jp', 'en-us'] - Stack.ContentType(contentTypes.source).Query().language('ja-jp') - .toJSON() - .includeFallback() - .findOne() - .then((entry) => { - var _entries = (_in.indexOf(entry['publish_details']['locale']) != -1); - assert.equal(_entries, true, "Publish content fallback"); - assert.end(); - }).catch((error) => { - assert.fail("Entries default .find() fallback catch", error.toString()); - assert.end(); - }) -}) - -// includeReference -test('findOne: .includeReference() - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .toJSON().findOne() - .then(function success(entry) { - assert.equal((entry && entry.reference && typeof entry.reference === 'object'), true, 'all the present reference are included'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .includeReference() - String"); - assert.end(); - }); -}); - -test('findOne: .includeReference() - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference(['reference', 'other_reference']) - .toJSON().findOne() - .then(function success(entry) { - assert.equal((entry && entry.reference && typeof entry.reference === 'object' && entry.other_reference && typeof entry.other_reference === 'object'), true, 'all the present reference and other reference are included'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .includeReference() - Array"); - assert.end(); - }); -}); - - -// includeSchema -test('findOne: .includeSchema()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .toJSON() - .findOne() - .then(function success(entry) { - // console.log("result : ", Object.keys(result || {})); - assert.ok(entry, 'Entry present in the resultset'); - //assert.ok(entry.length, 'Schema key present in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .includeSchema()"); - assert.end(); - }); -}); - -// includeContentType -test('findOne: .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeContentType() - .toJSON() - .findOne() - .then(function success(entry, contentType) { - // console.log("result : ", entry, contentType); - assert.ok(entry, 'entry present in the resultset'); - assert.ok((typeof contentType === "undefined"), 'ContentType is not present.'); - // assert.ok((contentType.uid === "source"), 'ContentType is title matched.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .includeContentType()"); - assert.end(); - }); -}); - -// includeSchema & includeContentType -test('findOne: includeSchema & .includeContentType()', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeSchema() - .includeContentType() - .toJSON() - .findOne() - .then(function success(entry, contentType) { - // console.log("result : ", entry, contentType); - assert.ok(entry, 'entry present in the resultset'); - assert.ok((typeof contentType === "undefined"), 'ContentType is not present.'); - // assert.ok((contentType.uid === "source"), 'ContentType is title matched.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: includeSchema & .includeContentType()"); - assert.end(); - }); -}); - -// only -test('findOne: .only() - Single String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only('title') - .toJSON().findOne() - .then(function success(entry) { - var flag = (entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry); - assert.ok(flag, 'entry with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - Single String Parameter"); - assert.end(); - }); -}); - -test('findOne: .only() - Multiple String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only('BASE', 'title') - .toJSON().findOne() - .then(function success(entry) { - var flag = (entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry); - assert.ok(flag, 'entry with the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - Multiple String Parameter"); - assert.end(); - }); -}); - -test('findOne: .only() - Array Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .only(['title', 'url']) - .toJSON().findOne() - .then(function success(entry) { - var flag = (entry && Object.keys(entry).length === 3 && "title" in entry && "url" in entry && "uid" in entry); - assert.ok(flag, 'entry with the field title,url in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - Array Parameter"); - assert.end(); + +describe('FindOne Tests', () => { + // Setup - Initialize the Contentstack Stack Instance + beforeAll((done) => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(done, 1000); + }); + + describe('Default FindOne', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + + describe('Sorting', () => { + describe('Ascending', () => { + let entry; + let error = null; + const field = 'created_at'; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.ascending(field).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + + describe('Descending', () => { + let entry; + let error = null; + const field = 'created_at'; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.descending(field).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + }); + + describe('Comparison', () => { + describe('lessThan', () => { + let entry; + let error = null; + const value = 11; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); + entry = await Query.lessThan('num_field', value).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('num_field should be less than specified value', () => { + expect(entry.num_field).toBeLessThan(value); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + + describe('lessThanOrEqualTo', () => { + let entry; + let error = null; + const value = 11; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); + entry = await Query.lessThanOrEqualTo('num_field', value).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('num_field should be less than or equal to specified value', () => { + expect(entry.num_field).toBeLessThanOrEqual(value); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + + }); + + describe('Array/Subset', () => { + describe('containedIn', () => { + let entry; + let error = null; + const _in = ["source1", "source2"]; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.containedIn('title', _in).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry title should be in the specified values', () => { + expect(_in).toContain(entry.title); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + + describe('notContainedIn', () => { + let entry; + let error = null; + const _in = ["source1", "source2", "source3", "source4"]; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.notContainedIn('title', _in).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should either return an entry or an expected error', () => { + if (entry) { + expect(entry).toBeDefined(); + expect(_in).not.toContain(entry.title); + expect(entry.uid).toBeDefined(); + expect(entry.locale).toBeDefined(); + expect(entry.publish_details).toBeDefined(); + } else { + expect(error).toEqual({ + error_code: 141, + error_message: 'The requested entry doesn\'t exist.' + }); + } + }); + }); + }); + + describe('Element Existence', () => { + describe('exists', () => { + let entry; + let error = null; + const queryField = "boolean"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.exists(queryField).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should have the queried field', () => { + expect(typeof entry[queryField]).not.toBe('undefined'); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + + describe('notExists', () => { + let entry; + let error = null; + const queryField = "isspecial"; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.notExists(queryField).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should either have entry without field or proper error', () => { + if (entry) { + expect(typeof entry[queryField]).toBe('undefined'); + expect(entry.uid).toBeDefined(); + expect(entry.locale).toBeDefined(); + expect(entry.publish_details).toBeDefined(); + } else { + expect(error).toEqual({ + error_code: 141, + error_message: 'The requested entry doesn\'t exist.' + }); + } + }); + }); + }); + + describe('Pagination', () => { + describe('skip', () => { + let allEntries; + let skippedEntry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + allEntries = await Query.toJSON().find(); + + const SkipQuery = Stack.ContentType(contentTypes.source).Query(); + skippedEntry = await SkipQuery.skip(1).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should have entries in the result set', () => { + expect(allEntries.length).toBeTruthy(); + }); + + test('Should get correct skipped entry', () => { + expect(skippedEntry).toEqual(allEntries[0][1]); + }); + }); + }); + + describe('Logical Operations', () => { + describe('OR Query Objects', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1', 'source2']); + const Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entry = await Query.or(Query1, Query2).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should satisfy the OR condition', () => { + const condition = (entry.title === 'source1' || + entry.title === 'source2' || + entry.boolean === true); + expect(condition).toBeTruthy(); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + + describe('AND Query Objects', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query1 = Stack.ContentType(contentTypes.source).Query().where('title', 'source1'); + const Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entry = await Query.and(Query1, Query2).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should satisfy the AND condition', () => { + const condition = (entry.title === 'source1' && entry.boolean === true); + expect(condition).toBeTruthy(); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + + describe('Raw Query', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .query({ "$or": [{ "title": "source1" }, { "boolean": "false" }] }) + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should satisfy the OR condition in raw query', () => { + const condition = (entry.title === 'source1' || entry.boolean === false); + expect(condition).toBeTruthy(); + }); + + test('Entry should have uid', () => { + expect(entry.uid).toBeDefined(); + }); + + test('Entry should have locale', () => { + expect(entry.locale).toBeDefined(); + }); + + test('Entry should have publish_details', () => { + expect(entry.publish_details).toBeDefined(); + }); + }); + }); + + describe('Localization', () => { + describe('Without Fallback', () => { + let entry; + let error = null; + const _in = ['ja-jp']; + + beforeAll(async () => { + try { + entry = await Stack.ContentType(contentTypes.source) + .Query() + .language('ja-jp') + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should have correct locale in publish_details', () => { + expect(_in).toContain(entry.publish_details.locale); + }); + }); + + describe('With Fallback', () => { + let entry; + let error = null; + const _in = ['ja-jp', 'en-us']; + + beforeAll(async () => { + try { + entry = await Stack.ContentType(contentTypes.source) + .Query() + .language('ja-jp') + .includeFallback() + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should have locale from allowed fallback list', () => { + expect(_in).toContain(entry.publish_details.locale); + }); + }); + }); + describe('Including References', () => { + describe('includeReference - String', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference('reference').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('All present references should be included as objects', () => { + expect(entry && entry.reference && typeof entry.reference === 'object').toBe(true); + }); + }); + + describe('includeReference - Array', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference(['reference', 'other_reference']).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('All present references should be included as objects', () => { + const condition = ( + entry && + entry.reference && + typeof entry.reference === 'object' && + entry.other_reference && + typeof entry.other_reference === 'object' + ); + expect(condition).toBe(true); + }); + }); + }); + + describe('Including Schema', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeSchema().toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + }); + + describe('Including ContentType', () => { + let entry; + let contentType; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + [entry, contentType] = await new Promise((resolve, reject) => { + Query.includeContentType() + .toJSON() + .findOne() + .then((entry, contentType) => resolve([entry, contentType]), reject); }); -}); - -test('findOne: .only() - For the reference - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', 'reference') - .only('reference', 'title') - .toJSON().findOne() - .then(function success(entry) { - var flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry.reference.every(function(reference) { - return (reference && "title" in reference && "uid" in reference); - }); - } else { - flag = true - } - assert.equal(flag, true, 'Entry has the reference with only paramteres.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - For the reference - String"); - assert.end(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('ContentType should not be present', () => { + expect(typeof contentType).toBe("undefined"); + }); + }); + + describe('Including Schema and ContentType', () => { + let entry; + let contentType; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + [entry, contentType] = await new Promise((resolve, reject) => { + Query.includeSchema() + .includeContentType() + .toJSON() + .findOne() + .then((entry, contentType) => resolve([entry, contentType]), reject); }); -}); - -test('findOne: .only() - For the reference - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .only('reference', ['title']) - .toJSON().findOne() - .then(function success(entry) { - var flag = false; - if (entry && entry['reference']) { - if (entry['reference'].length) { - if (entry['reference'].length === 0){ - flag = true - } else { - flag = entry.reference.every(function(reference) { - return (reference && "title" in reference && "uid" in reference); - }); - } - }else { - flag = true - } + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('ContentType should not be present', () => { + expect(typeof contentType).toBe("undefined"); + }); + }); + + describe('Field Selection - Only', () => { + describe('only - Single String Parameter', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only('title').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should only contain title and uid fields', () => { + expect(Object.keys(entry).length).toBe(2); + expect(entry).toHaveProperty('title'); + expect(entry).toHaveProperty('uid'); + }); + }); + + describe('only - Multiple String Parameters', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only('BASE', 'title').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should only contain title and uid fields', () => { + expect(Object.keys(entry).length).toBe(2); + expect(entry).toHaveProperty('title'); + expect(entry).toHaveProperty('uid'); + }); + }); + + describe('only - Array Parameter', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only(['title', 'url']).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should contain title, url, and uid fields', () => { + expect(Object.keys(entry).length).toBe(3); + expect(entry).toHaveProperty('title'); + expect(entry).toHaveProperty('url'); + expect(entry).toHaveProperty('uid'); + }); + }); + + describe('only - For reference - String', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .includeReference('reference') + .only('BASE', 'reference') + .only('reference', 'title') + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('References should have only specified fields', () => { + let flag = false; + if (entry && entry['reference'] && typeof entry['reference'] === 'object') { + flag = entry.reference.every(reference => + reference && "title" in reference && "uid" in reference); + } else { + flag = true; + } + expect(flag).toBe(true); + }); + }); + + describe('only - For reference - Array', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .includeReference('reference') + .only('BASE', ['reference']) + .only('reference', ['title']) + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('References should have only specified fields', () => { + let flag = false; + if (entry && entry['reference']) { + if (entry['reference'].length) { + if (entry['reference'].length === 0) { + flag = true; } else { - flag = true + flag = entry.reference.every(reference => + reference && "title" in reference && "uid" in reference); } - assert.equal(flag, true, 'Entry has the reference with only paramteres.'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .only() - For the reference - Array"); - assert.end(); - }); -}); - -// except -test('findOne: .except() - Single String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except('title') - .toJSON().findOne() - .then(function success(entry) { - var flag = (entry && !("title" in entry)); - assert.ok(flag, 'entry without the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - Single String Parameter"); - assert.end(); - }); -}); - -test('findOne: .except() - Multiple String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except('BASE', 'title') - .toJSON().findOne() - .then(function success(entry) { - var flag = (entry && !("title" in entry)); - assert.ok(flag, 'entry without the field title in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - Multiple String Parameter"); - assert.end(); - }); -}); - -test('findOne: .except() - Array of String Parameter', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .except(['title', 'file']) - .toJSON().findOne() - .then(function success(entry) { - var flag = (entry && !("title" in entry) && !("file" in entry)); - assert.ok(flag, 'entry without the field title, file in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - Array of String Parameter"); - assert.end(); - }); -}); - -test('findOne: .except() - For the reference - String', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', 'reference') - .except('reference', 'title') - .toJSON().findOne() - .then(function success(entry) { - var flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry.reference.every(function(reference) { - return (reference && !("title" in reference)); - }); - } - assert.ok(flag, 'entry with the field reference without title field in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - For the reference - String"); - assert.end(); - }); -}); - -test('findOne: .except() - For the reference - Array', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .includeReference('reference') - .only('BASE', ['reference']) - .except('reference', ['title']) - .toJSON().findOne() - .then(function success(entry) { - var flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry.reference.every(function(reference) { - return (reference && !("title" in reference)); - }); - } - assert.ok(flag, 'entry with the field reference without title field in the resultset'); - assert.end(); - }, function error(err) { - console.error("Error :", err); - assert.fail("findOne: .except() - For the reference - Array"); - assert.end(); - }); -}); -/*! - * HTTP Error Handling - * !*/ - -test('findOne: should handle 422 Unprocessable Entity error', function(assert) { - const Query = Stack.ContentType("invalid_content_type").Query(); - - Query - .toJSON() - .findOne() - .then(function success() { - assert.fail("Expected 422 error but got a successful response."); - assert.end(); - }, function error(err) { - assert.equal(err.http_code, 422, 'Should return HTTP status 422.'); - assert.ok(err.http_message, 'Unprocessable Entity'); - assert.end(); - }); -}); - -test('findOne: should handle 412 Unauthorized error', function(assert) { - Stack.headers = { authorization: 'InvalidAPIKey' }; // Simulating an invalid API key - const Query = Stack.ContentType(contentTypes.source).Query(); - - Query - .toJSON() - .findOne() - .then(function success() { - assert.fail("Expected 412 error but got a successful response."); - assert.end(); - }, function error(err) { - assert.equal(err.http_code, 412, 'Should return HTTP status 412.'); - assert.ok(err.http_message, 'Precondition Failed.'); - assert.end(); - }); -}); + } else { + flag = true; + } + } else { + flag = true; + } + expect(flag).toBe(true); + }); + }); + }); + + describe('Field Selection - Except', () => { + describe('except - Single String Parameter', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except('title').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should not contain the title field', () => { + expect(entry).not.toHaveProperty('title'); + }); + }); + + describe('except - Multiple String Parameters', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except('BASE', 'title').toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should not contain the title field', () => { + expect(entry).not.toHaveProperty('title'); + }); + }); + + describe('except - Array Parameter', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except(['title', 'file']).toJSON().findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('Entry should not contain the title field', () => { + expect(entry).not.toHaveProperty('title'); + }); + + test('Entry should not contain the file field', () => { + expect(entry).not.toHaveProperty('file'); + }); + }); + + describe('except - For reference - String', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .includeReference('reference') + .only('BASE', 'reference') + .except('reference', 'title') + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('References should not contain the specified field', () => { + let flag = false; + if (entry && entry['reference'] && typeof entry['reference'] === 'object') { + flag = entry.reference.every(reference => + reference && !("title" in reference)); + } + expect(flag).toBeTruthy(); + }); + }); + + describe('except - For reference - Array', () => { + let entry; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query + .includeReference('reference') + .only('BASE', ['reference']) + .except('reference', ['title']) + .toJSON() + .findOne(); + } catch (err) { + error = err; + console.error("Error:", err); + } + }); + + test('Should return an entry', () => { + expect(entry).toBeDefined(); + }); + + test('References should not contain the specified field', () => { + let flag = false; + if (entry && entry['reference'] && typeof entry['reference'] === 'object') { + flag = entry.reference.every(reference => + reference && !("title" in reference)); + } + expect(flag).toBeTruthy(); + }); + }); + }); + + describe('HTTP Error Handling', () => { + describe('422 Unprocessable Entity Error', () => { + let success = false; + let error = null; + + beforeAll(async () => { + try { + const Query = Stack.ContentType("invalid_content_type").Query(); + await Query.toJSON().findOne(); + success = true; + } catch (err) { + error = err; + } + }); + + test('Should not succeed', () => { + expect(success).toBe(false); + }); + + test('Should return HTTP status 422', () => { + expect(error.http_code).toBe(422); + }); + + test('Should have appropriate error message', () => { + expect(error.http_message).toBeTruthy(); + }); + }); + + describe('412 Unauthorized Error', () => { + let success = false; + let error = null; + + beforeAll(async () => { + try { + Stack.headers = { authorization: 'InvalidAPIKey' }; // Simulating an invalid API key + const Query = Stack.ContentType(contentTypes.source).Query(); + await Query.toJSON().findOne(); + success = true; + } catch (err) { + error = err; + } finally { + // Reset headers for subsequent tests + Stack.headers = {}; + } + }); + + test('Should not succeed', () => { + expect(success).toBe(false); + }); + + test('Should return HTTP status 412', () => { + expect(error.http_code).toBe(412); + }); + + test('Should have appropriate error message', () => { + expect(error.http_message).toBeTruthy(); + }); + }); + }); +}); \ No newline at end of file diff --git a/test/entry/spread.js b/test/entry/spread.js index b863c9c5..f6395c37 100755 --- a/test/entry/spread.js +++ b/test/entry/spread.js @@ -1,209 +1,286 @@ /** * Created by Aamod Pisat on 09-06-2017. */ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const test = require('tape'); -const Contentstack = require('../../dist/node/contentstack.js'); -const init = require('../config.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const init = require("../config.js"); const contentTypes = init.contentTypes; -var Stack; -/* - * Initalise the Contentstack Instance - * */ -test('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); +let Stack; + +describe("Spread Method Tests", () => { + // Setup - Initialize the Contentstack Stack Instance + beforeAll((done) => { + Stack = Contentstack.Stack(init.stack); + Stack.setHost(init.host); + setTimeout(done, 1000); + }); -test('entries as first argument', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; + describe("Entries as first argument", () => { + const field = "updated_at"; - Query - .limit(1) + test("Should have entries", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.limit(1) .toJSON() .find() .spread(function success(entries) { - assert.ok(entries.length, 'Entries exists as first parameter'); - if (entries && entries.length) { - var prev = entries[0][field]; - var _entries = entries.every(function(entry) { - prev = entry[field]; - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.end(); + expect(entries.length).toBeTruthy(); }); -}); + }); + + test("Should maintain default sorting of descending updated_at", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.limit(1) + .toJSON() + .find() + .spread(function success(entries) { + if (entries && entries.length) { + let prev = entries[0][field]; + const _entries = entries.every((entry) => { + prev = entry[field]; + return entry[field] <= prev; + }); + expect(_entries).toBe(true); + } + }); + }); + }); + + describe("With entries and count argument", () => { + const field = "updated_at"; + + test("Should have entries as first parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeCount() + .toJSON() + .find() + .spread((entries) => { + expect(entries.length).toBeTruthy(); + }); + }); + + test("Should have count as second parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeCount() + .toJSON() + .find() + .spread((_, count) => { + expect(count).toBeTruthy(); + }); + }); + + test("Should maintain default sorting of descending updated_at", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeCount() + .toJSON() + .find() + .spread((entries) => { + if (entries && entries.length) { + let prev = entries[0][field]; + const _entries = entries.every((entry) => { + prev = entry[field]; + return entry[field] <= prev; + }); + expect(_entries).toBe(true); + } + }); + }); + }); + + describe("With entries, schema and count argument (includeSchema first)", () => { + const field = "updated_at"; -test('with entries and count argument', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - Query + test("Should have entries as first parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeSchema() .includeCount() .toJSON() .find() - .spread(function success(entries, count) { - assert.ok(entries.length, 'Entries exists as first parameter'); - assert.ok(count, 'Count exists as second parameter'); - if (entries && entries.length) { - var prev = entries[0][field]; - var _entries = entries.every(function(entry) { - prev = entry[field]; - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.end(); + .spread((entries) => { + expect(entries.length).toBeTruthy(); }); -}); + }); -test('with entries, schema and count argument', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - Query - .includeSchema() + test("Should have schema as second parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeSchema() .includeCount() .toJSON() .find() - .spread(function success(entries, schema, count) { - assert.ok(entries.length, 'Entries exists as first parameter'); - assert.ok(schema, 'Schema exists as second parameter'); - assert.ok(count, 'Count exists as third parameter'); - if (entries && entries.length) { - var prev = entries[0][field]; - var _entries = entries.every(function(entry) { - prev = entry[field]; - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.end(); + .spread((_, schema) => { + expect(schema).toBeTruthy(); }); -}); + }); -test('with entries, schema and count argument', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - Query + test("Should have count as third parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeSchema() .includeCount() - .includeSchema() .toJSON() .find() - .spread(function success(entries, schema, count) { - assert.ok(entries.length, 'Entries exists as first parameter'); - assert.ok(schema, 'Schema exists as second parameter'); - assert.ok(count, 'Count exists as third parameter'); - if (entries && entries.length) { - var prev = entries[0][field]; - var _entries = entries.every(function(entry) { - prev = entry[field]; - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.fail(err.message); - assert.end(); + .spread((_, __, count) => { + expect(count).toBeTruthy(); }); -}); + }); -test('with entries, content_type and count argument', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - Query - .includeContentType() + test("Should maintain default sorting of descending updated_at", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeSchema() .includeCount() .toJSON() .find() - .spread(function success(entries, contentType, count) { - assert.ok(entries.length, 'Entries exists as first parameter'); - assert.ok(contentType, 'ContentType exists as second parameter'); - assert.ok((contentType.uid === contentTypes.source), 'ContentType exists as second parameter'); - assert.ok(count, 'Count exists as third parameter'); - if (entries && entries.length) { - var prev = entries[0][field]; - var _entries = entries.every(function(entry) { - prev = entry[field]; - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.end(); + .spread((entries) => { + if (entries && entries.length) { + let prev = entries[0][field]; + const _entries = entries.every((entry) => { + prev = entry[field]; + return entry[field] <= prev; + }); + expect(_entries).toBe(true); + } }); -}); + }); + }); -test('with entries, content_type and count argument', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - Query + describe("With entries, content_type and count argument (includeContentType first)", () => { + const field = "updated_at"; + + test("Should have entries as first parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeContentType() .includeCount() - .includeContentType() .toJSON() .find() - .spread(function success(entries, contentType, count) { - assert.ok(entries.length, 'Entries exists as first parameter'); - assert.ok(contentType, 'ContentType exists as second parameter'); - assert.ok((contentType.uid === contentTypes.source), 'ContentType exists as second parameter'); - assert.ok(count, 'Count exists as third parameter'); - if (entries && entries.length) { - var prev = entries[0][field]; - var _entries = entries.every(function(entry) { - prev = entry[field]; - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.fail(err.message); - assert.end(); + .spread((entries) => { + expect(entries.length).toBeTruthy(); }); -}); + }); + + test("Should have contentType as second parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeContentType() + .includeCount() + .toJSON() + .find() + .spread((_, contentType) => { + expect(contentType).toBeTruthy(); + }); + }); -test('with entries, content_type|schema and count argument', function(assert) { - var Query = Stack.ContentType(contentTypes.source).Query(), - field = 'updated_at'; - Query + test("Should have correct contentType uid", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeContentType() .includeCount() + .toJSON() + .find() + .spread((_, contentType) => { + expect(contentType.uid).toBe(contentTypes.source); + }); + }); + + test("Should have count as third parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeContentType() + .includeCount() + .toJSON() + .find() + .spread((_, __, count) => { + expect(count).toBeTruthy(); + }); + }); + + test("Should maintain default sorting of descending updated_at", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeContentType() + .includeCount() + .toJSON() + .find() + .spread((entries) => { + if (entries && entries.length) { + let prev = entries[0][field]; + const _entries = entries.every((entry) => { + prev = entry[field]; + return entry[field] <= prev; + }); + expect(_entries).toBe(true); + } + }); + }); + }); + + describe("With entries, content_type|schema and count argument", () => { + const field = "updated_at"; + + test("Should have entries as first parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeCount() + .includeSchema() + .includeContentType() + .toJSON() + .find() + .spread((entries) => { + expect(entries.length).toBeTruthy(); + }); + }); + + test("Should have contentType as second parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeCount() .includeSchema() .includeContentType() .toJSON() .find() - .spread(function success(entries, contentType, count) { - assert.ok(entries.length, 'Entries exists as first parameter'); - assert.ok(contentType, 'ContentType exists as second parameter'); - assert.ok((contentType.uid === contentTypes.source), 'ContentType exists as second parameter'); - assert.ok(count, 'Count exists as third parameter'); - if (entries && entries.length) { - var prev = entries[0][field]; - var _entries = entries.every(function(entry) { - prev = entry[field]; - return (entry[field] <= prev); - }); - assert.equal(_entries, true, "default sorting of descending 'updated_at'"); - } - assert.end(); - }, function error(err) { - assert.fail(err.message); - assert.end(); - }); -}); \ No newline at end of file + .spread((_, contentType) => { + expect(contentType).toBeTruthy(); + }); + }); + + test("Should have correct contentType uid", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeCount() + .includeSchema() + .includeContentType() + .toJSON() + .find() + .spread((_, contentType) => { + expect(contentType.uid).toBe(contentTypes.source); + }); + }); + + test("Should have count as third parameter", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeCount() + .includeSchema() + .includeContentType() + .toJSON() + .find() + .spread((_, __, count) => { + expect(count).toBeTruthy(); + }); + }); + + test("Should maintain default sorting of descending updated_at", () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + Query.includeCount() + .includeSchema() + .includeContentType() + .toJSON() + .find() + .spread((entries) => { + if (entries && entries.length) { + let prev = entries[0][field]; + const _entries = entries.every((entry) => { + prev = entry[field]; + return entry[field] <= prev; + }); + expect(_entries).toBe(true); + } + }); + }); + }); +}); diff --git a/test/live-preview/live-preview-test.js b/test/live-preview/live-preview-test.js index 7bd491d3..31952026 100644 --- a/test/live-preview/live-preview-test.js +++ b/test/live-preview/live-preview-test.js @@ -1,91 +1,90 @@ - 'use strict'; -const test = require('tape'); const Contentstack = require('../../dist/node/contentstack.js'); -test('should check for values initialized', function(assert) { +describe('Contentstack Live Preview Tests', () => { + test('should check for values initialized', () => { const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT + 'api_key': process.env.region_API_KEY, + 'delivery_token': process.env.DELIVERY_TOKEN, + 'environment': process.env.ENVIRONMENT }); + const livePreviewObject = stack.config.live_preview; - assert.equal(livePreviewObject.enable, false); - assert.equal(stack.config.host, 'cdn.contentstack.io'); // rest-preview.contentstack.com - assert.end(); -}); + expect(livePreviewObject.enable).toBe(false); + expect(stack.config.host).toBe('cdn.contentstack.io'); // rest-preview.contentstack.com + }); -test('should check host when live preview is enabled and management token is provided', function(assert) { + test('should check host when live preview is enabled and management token is provided', () => { const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT, - live_preview: { - enable: true, - management_token: 'management_token' - } + 'api_key': process.env.API_KEY, + 'delivery_token': process.env.DELIVERY_TOKEN, + 'environment': process.env.ENVIRONMENT, + live_preview: { + enable: true, + management_token: 'management_token' + } }); + const livePreviewObject = stack.config.live_preview; - assert.notEqual(livePreviewObject, 'undefined'); - assert.notEqual(livePreviewObject.enable, 'undefined'); - assert.notEqual(livePreviewObject.host, 'undefined'); - assert.equal(stack.config.host, 'cdn.contentstack.io'); // rest-preview.contentstack.com - assert.end(); -}); + expect(livePreviewObject).not.toBe('undefined'); + expect(livePreviewObject.enable).not.toBe('undefined'); + expect(livePreviewObject.host).not.toBe('undefined'); + expect(stack.config.host).toBe('cdn.contentstack.i'); // rest-preview.contentstack.com + }); -test('should check host when live preview is disabled and management token is provided', function(assert) { + test('should check host when live preview is disabled and management token is provided', () => { const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT, - live_preview: { - enable: false, - management_token: 'management_token' - } + 'api_key': process.env.API_KEY, + 'delivery_token': process.env.DELIVERY_TOKEN, + 'environment': process.env.ENVIRONMENT, + live_preview: { + enable: false, + management_token: 'management_token' + } }); + const livePreviewObject = stack.config.live_preview; - assert.notEqual(livePreviewObject, 'undefined'); - assert.equal(livePreviewObject.enable, false); - assert.notEqual(livePreviewObject.host, 'undefined'); - assert.end(); -}); + expect(livePreviewObject).not.toBe('undefined'); + expect(livePreviewObject.enable).toBe(false); + expect(livePreviewObject.host).not.toBe('undefined'); + }); -test('should check host when live preview is enabled and preview token is provided', function(assert) { + test('should check host when live preview is enabled and preview token is provided', () => { const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT, - live_preview: { - enable: true, - preview_token: 'preview_token' - } + 'api_key': process.env.API_KEY, + 'delivery_token': process.env.DELIVERY_TOKEN, + 'environment': process.env.ENVIRONMENT, + live_preview: { + enable: true, + preview_token: 'preview_token' + } }); + const livePreviewObject = stack.config.live_preview; - assert.notEqual(livePreviewObject, 'undefined'); - assert.notEqual(livePreviewObject.enable, 'undefined'); - assert.notEqual(livePreviewObject.host, 'undefined'); - assert.notEqual(livePreviewObject.preview_token, 'undefined'); - assert.equal(stack.config.host, 'cdn.contentstack.io'); - assert.end(); -}); + expect(livePreviewObject).not.toBe('undefined'); + expect(livePreviewObject.enable).not.toBe('undefined'); + expect(livePreviewObject.host).not.toBe('undefined'); + expect(livePreviewObject.preview_token).not.toBe('undefined'); + expect(stack.config.host).toBe('cdn.contentstack.io'); + }); -test('should check host when live preview is disabled and preview token is provided', function(assert) { + test('should check host when live preview is disabled and preview token is provided', () => { const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT, - live_preview: { - enable: false, - preview_token: 'preview_token' - } + 'api_key': process.env.API_KEY, + 'delivery_token': process.env.DELIVERY_TOKEN, + 'environment': process.env.ENVIRONMENT, + live_preview: { + enable: false, + preview_token: 'preview_token' + } }); + const livePreviewObject = stack.config.live_preview; - assert.notEqual(livePreviewObject, 'undefined'); - assert.notEqual(livePreviewObject.enable, 'undefined'); - assert.notEqual(livePreviewObject.host, 'undefined'); - assert.notEqual(livePreviewObject.preview_token, 'undefined'); - assert.equal(stack.config.host, 'cdn.contentstack.io'); - assert.end(); -}); - + expect(livePreviewObject).not.toBe('undefined'); + expect(livePreviewObject.enable).not.toBe('undefined'); + expect(livePreviewObject.host).not.toBe('undefined'); + expect(livePreviewObject.preview_token).not.toBe('undefined'); + expect(stack.config.host).toBe('cdn.contentstack.io'); + }); +}); \ No newline at end of file From 1d77bfc2f0d59939172a678ec9d7de8904706b29 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 20 Mar 2025 15:49:01 +0530 Subject: [PATCH 47/76] fix: update live preview test to use correct CDN host --- test/live-preview/live-preview-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/live-preview/live-preview-test.js b/test/live-preview/live-preview-test.js index 31952026..4ffc93e2 100644 --- a/test/live-preview/live-preview-test.js +++ b/test/live-preview/live-preview-test.js @@ -30,7 +30,7 @@ describe('Contentstack Live Preview Tests', () => { expect(livePreviewObject).not.toBe('undefined'); expect(livePreviewObject.enable).not.toBe('undefined'); expect(livePreviewObject.host).not.toBe('undefined'); - expect(stack.config.host).toBe('cdn.contentstack.i'); // rest-preview.contentstack.com + expect(stack.config.host).toBe('cdn.contentstack.io'); // rest-preview.contentstack.com }); test('should check host when live preview is disabled and management token is provided', () => { From 600c11545d0aa61ed711f9586d73df3d0b3340af Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 20 Mar 2025 15:58:59 +0530 Subject: [PATCH 48/76] feat: update testing scripts and enhance Slack reporting for test results --- package-lock.json | 14 +++++ package.json | 2 +- sanity-report-dev11.js | 132 ++++++++++++++++++++++++----------------- 3 files changed, 94 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index c0de69ab..e867920c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5461,6 +5461,20 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", diff --git a/package.json b/package.json index c5d28589..ca89d221 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "_id": "contentstack@3.19.3", "scripts": { "test": "npm run test:e2e && npm run test:typescript", - "test:e2e": "tape test/index.js | tap-html --out ./tap-html.html", + "test:e2e": "jest --config jest.js.config.js", "test:typescript": "jest --config jest.config.js --testPathPattern=test/typescript", "automate": "node test.js", "build:node": "webpack --config webpack/webpack.node.js", diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index eea37a6d..d82cc27b 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -1,6 +1,8 @@ const fs = require("fs"); +const { App } = require("@slack/bolt"); const { JSDOM } = require("jsdom"); const dotenv = require("dotenv"); +const path = require("path"); dotenv.config(); @@ -9,40 +11,38 @@ const user2 = process.env.USER2; const user3 = process.env.USER3; const user4 = process.env.USER4; -const tapHtmlContent = fs.readFileSync("./tap-html.html", "utf8"); -const dom = new JSDOM(tapHtmlContent); -const $ = require("jquery")(dom.window); - -const totalCount = $(".nav a:nth-child(2)") - .text() - .trim() - .replace("Total Count", ""); -const totalPass = $(".nav a:nth-child(3)") - .text() - .trim() - .replace("Total Pass", ""); -const totalFail = $(".nav a:nth-child(4)") - .text() - .trim() - .replace("Total Fail", ""); - -const totalTime = $(".nav a:nth-child(1)") - .text() - .trim() - .replace("Total Time", ""); - -const milliseconds = parseInt(totalTime.replace(/\D/g, ''), 10); -const totalSeconds = Math.floor(milliseconds / 1000); -const durationInMinutes = Math.floor(totalSeconds / 60); -const durationInSeconds = totalSeconds % 60; - -const passedTests = parseInt(totalPass, 10); -const totalTests = parseInt(totalCount, 10); +const data = fs.readFileSync(path.join(__dirname, "tap-html.html"), "utf8"); +const dom = new JSDOM(data); +const textarea = dom.window.document.querySelector( + "#jest-html-reports-result-data" +); +const testResults = JSON.parse(textarea.textContent.trim()); + +const startTime = testResults.startTime; +const endTime = Math.max( + ...testResults.testResults.map((t) => t.perfStats.end) +); +const totalSeconds = (endTime - startTime) / 1000; +const minutes = Math.floor(totalSeconds / 60); +const seconds = (totalSeconds % 60).toFixed(2); +const duration = `${minutes}m ${seconds}s`; + +const summary = { + totalSuites: testResults.numTotalTestSuites, + passedSuites: testResults.numPassedTestSuites, + failedSuites: testResults.numFailedTestSuites, + totalTests: testResults.numTotalTests, + passedTests: testResults.numPassedTests, + failedTests: testResults.numFailedTests, + skippedTests: testResults.numPendingTests + testResults.numTodoTests, + pendingTests: testResults.numPendingTests, + duration: duration, +}; const resultMessage = - passedTests === totalTests - ? `:white_check_mark: Success (${passedTests} / ${totalTests} Passed)` - : `:x: Failure (${passedTests} / ${totalTests} Passed)`; + summary.passedTests === summary.totalTests + ? `:white_check_mark: Success (${summary.passedTests} / ${summary.totalTests} Passed)` + : `:x: Failure (${summary.passedTests} / ${summary.totalTests} Passed)`; const pipelineName = process.env.GO_PIPELINE_NAME; const pipelineCounter = process.env.GO_PIPELINE_COUNTER; @@ -51,42 +51,68 @@ const goCdServer = process.env.GOCD_SERVER; const reportUrl = `http://${goCdServer}/go/files/${pipelineName}/${pipelineCounter}/sanity/1/sanity/test-results/tap-html.html`; let tagUsers = ``; -if (totalFail > 0) { +if (summary.failedTests > 0) { tagUsers = `<@${user1}> <@${user2}> <@${user3}> <@${user4}>`; } const slackMessage = { text: `Dev11, SDK-CDA Sanity -*Result:* ${resultMessage}. ${durationInMinutes}m ${durationInSeconds}s -*Failed Tests:* ${totalFail} +*Result:* ${resultMessage}. ${summary.duration}s +*Failed Tests:* ${summary.failedTests + summary.skippedTests} <${reportUrl}|View Report> ${tagUsers}`, }; -const slackWebhookUrl = process.env.SLACK_WEBHOOK_URL; - -const sendSlackMessage = async (message) => { - const payload = { - text: message, - }; +const app = new App({ + token: process.env.SLACK_BOT_TOKEN, + signingSecret: process.env.SLACK_SIGNING_SECRET, +}); +const sendSlackMessage = async () => { try { - const response = await fetch(slackWebhookUrl, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(payload), + const result = await app.client.chat.postMessage({ + token: process.env.SLACK_BOT_TOKEN, + channel: process.env.SLACK_CHANNEL, + text: slackMessage.text, // Ensure this is the full object }); - if (!response.ok) { - throw new Error(`Error sending message to Slack: ${response.statusText}`); + if (summary.failedTests > 0) { + await sendFailureDetails(result.ts); // Pass the correct thread timestamp } - - console.log("Message sent to Slack successfully"); } catch (error) { - console.error("Error:", error); + console.error("Error sending Slack message:", error); + } +}; + +sendSlackMessage(); + + +const sendFailureDetails = async (threadTs) => { + const failedTestSuites = testResults.testResults.filter( + (suite) => suite.numFailingTests > 0 + ); + if (failedTestSuites.length > 0) { + let failureDetails = "*Failed Test Modules:*\n"; + for (const suite of failedTestSuites) { + let modulePath = suite.testFilePath; + let formattedModuleName = path + .relative(__dirname, modulePath) + .replace(/^test\//, "") + .replace(/\.js$/, "") + .replace(/\//g, " "); + failureDetails += ` - ${formattedModuleName}: ${suite.numFailingTests} failed\n`; + } + try { + await app.client.chat.postMessage({ + token: process.env.SLACK_BOT_TOKEN, + channel: process.env.SLACK_CHANNEL, + text: failureDetails, + thread_ts: threadTs, + }); + } catch (error) { + console.error("Error sending failure details:", error); + } } }; -sendSlackMessage(slackMessage.text); \ No newline at end of file +sendSlackMessage(slackMessage.text); From 9a4b69913547640f0babe45f2c2f69d0948f0e67 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 20 Mar 2025 16:06:25 +0530 Subject: [PATCH 49/76] refactor: remove unnecessary invocation of sendSlackMessage in sanity-report-dev11.js --- sanity-report-dev11.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index d82cc27b..d43a9138 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -84,9 +84,6 @@ const sendSlackMessage = async () => { } }; -sendSlackMessage(); - - const sendFailureDetails = async (threadTs) => { const failedTestSuites = testResults.testResults.filter( (suite) => suite.numFailingTests > 0 From 9870ff0ead33745b7a3a56acebfd47a459623acd Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 20 Mar 2025 17:20:34 +0530 Subject: [PATCH 50/76] refactor: remove try catch blocks in test cases --- test/asset/find-result-wrapper.js | 1164 +++++++++++++------- test/asset/find.js | 936 ++++++++-------- test/asset/spread.js | 88 +- test/entry/find-result-wrapper.js | 1463 +++++++++++++++----------- test/entry/find.js | 802 +++++--------- test/entry/findone-result-wrapper.js | 940 +++++++---------- test/entry/findone.js | 784 ++++++-------- 7 files changed, 3095 insertions(+), 3082 deletions(-) diff --git a/test/asset/find-result-wrapper.js b/test/asset/find-result-wrapper.js index 5662dd38..5c03e016 100755 --- a/test/asset/find-result-wrapper.js +++ b/test/asset/find-result-wrapper.js @@ -1,10 +1,10 @@ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const Contentstack = require('../../dist/node/contentstack.js'); -const init = require('../config.js'); -const Utils = require('../entry/utils.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const init = require("../config.js"); +const Utils = require("../entry/utils.js"); let Stack; @@ -18,82 +18,182 @@ describe("Contentstack Asset Tests", () => { }); }); - test('default .find() No fallback', async () => { - const _in = ['ja-jp']; - - try { - const assets = await Stack.Assets().Query().language('ja-jp').toJSON().find(); - + describe("default .find() No fallback", () => { + const _in = ["ja-jp"]; + let assets; + + // Setup - run the query once for all tests + beforeAll(async () => { + try { + assets = await Stack.Assets().Query().language("ja-jp").toJSON().find(); + } catch (error) { + console.error("Error in beforeAll:", error); + throw error; + } + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); + }); + + test("should not include count when not requested", async () => { expect(assets[1]).toBeFalsy(); - + }); + + test("should return assets only in the requested locale", async () => { if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (_in.indexOf(asset['publish_details']['locale']) !== -1); + const allAssetsInRequestedLocale = assets[0].every((asset) => { + return _in.indexOf(asset["publish_details"]["locale"]) !== -1; }); - expect(_assets).toBe(true); + expect(allAssetsInRequestedLocale).toBe(true); + } else { + // Skip this test if no assets are returned + console.warn("No assets returned to verify locale"); } - } catch (error) { - console.error("Error:", error); - fail("asset default .find() fallback catch: " + error.toString()); - } + }); + + test("should have the correct structure for each asset", async () => { + if (assets && assets.length && assets[0].length) { + const firstAsset = assets[0][0]; + expect(firstAsset).toHaveProperty("uid"); + expect(firstAsset).toHaveProperty("title"); + expect(firstAsset).toHaveProperty("publish_details"); + expect(firstAsset.publish_details).toHaveProperty("locale"); + expect(firstAsset.publish_details.locale).toBe("ja-jp"); + } else { + // Skip this test if no assets are returned + console.warn("No assets returned to verify structure"); + } + }); }); - test('default .find() fallback', async () => { - const _in = ['ja-jp', 'en-us']; - try { - const assets = await Stack.Assets().Query().language('ja-jp').includeFallback().toJSON().find(); + describe("default .find() with fallback", () => { + const _in = ["ja-jp", "en-us"]; + let assets; + + // Setup - run the query once for all tests + beforeAll(async () => { + try { + assets = await Stack.Assets() + .Query() + .language("ja-jp") + .includeFallback() + .toJSON() + .find(); + } catch (error) { + console.error("Error in beforeAll:", error); + throw error; + } + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); + }); + + test("should not include count when not requested", async () => { expect(assets[1]).toBeFalsy(); - + }); + + test("should return assets from both primary and fallback locales", async () => { if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (_in.indexOf(asset['publish_details']['locale']) !== -1); + const allAssetsInAllowedLocales = assets[0].every((asset) => { + return _in.indexOf(asset["publish_details"]["locale"]) !== -1; }); - expect(_assets).toBe(true); + expect(allAssetsInAllowedLocales).toBe(true); + } else { + // Skip this test if no assets are returned + console.warn("No assets returned to verify locales with fallback"); } - } catch (error) { - console.error("Error:", error); - fail("asset default .find() fallback catch: " + error.toString()); - } + }); + + test("should include some assets in primary locale", async () => { + if (assets && assets.length && assets[0].length) { + const anyAssetsInPrimaryLocale = assets[0].some((asset) => { + return asset["publish_details"]["locale"] === "ja-jp"; + }); + expect(anyAssetsInPrimaryLocale).toBe(true); + } else { + console.warn("No assets returned to verify primary locale presence"); + } + }); + + test("should have the correct structure for each asset", async () => { + if (assets && assets.length && assets[0].length) { + const firstAsset = assets[0][0]; + expect(firstAsset).toHaveProperty("uid"); + expect(firstAsset).toHaveProperty("title"); + expect(firstAsset).toHaveProperty("publish_details"); + expect(firstAsset.publish_details).toHaveProperty("locale"); + expect( + ["ja-jp", "en-us"].includes(firstAsset.publish_details.locale) + ).toBe(true); + } else { + console.warn("No assets returned to verify structure"); + } + }); }); - test('default .find()', async () => { - const Query = Stack.Assets().Query(); - const field = 'updated_at'; - try { - const assets = await Query.toJSON().find(); - + describe("default .find()", () => { + let assets; + const field = "updated_at"; + + // Setup - run the query once for all tests + beforeAll(async () => { + try { + const Query = Stack.Assets().Query(); + assets = await Query.toJSON().find(); + } catch (error) { + console.error("Error in beforeAll:", error); + throw error; + } + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); + }); + + test("should not include count when not requested", async () => { expect(assets[1]).toBeFalsy(); - + }); + + test("should return assets sorted by updated_at by default in descending order", async () => { if (assets && assets.length && assets[0].length) { let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { + const allAssetsSorted = assets[0].every((asset) => { + const isSorted = asset[field] <= prev; prev = asset[field]; - return (asset[field] <= prev); + return isSorted; }); - expect(_assets).toBe(true); + expect(allAssetsSorted).toBe(true); + } else { + console.warn("No assets returned to verify sorting"); } - } catch (err) { - console.error("Error:", err); - fail("asset default .find()"); - } + }); }); describe("sorting", () => { - test('.ascending()', async () => { + test(".ascending()", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at';try { + const field = "updated_at"; + try { const assets = await Query.ascending(field).toJSON().find(); - + expect(assets[0].length).toBeTruthy(); - + if (assets && assets.length && assets[0].length) { let prev = assets[0][0][field]; const _assets = assets[0].every((asset) => { prev = asset[field]; - return (asset[field] >= prev); + return asset[field] >= prev; }); expect(_assets).toBe(true); } @@ -103,18 +203,18 @@ describe("Contentstack Asset Tests", () => { } }); - test('.descending()', async () => { + test(".descending()", async () => { const Query = Stack.Assets().Query(); - const field = 'created_at'; + const field = "created_at"; try { const assets = await Query.descending(field).toJSON().find(); - + expect(assets[0].length).toBeTruthy(); - + if (assets && assets.length && assets[0].length) { let prev = assets[0][0][field]; const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); + const flag = asset[field] <= prev; prev = asset[field]; return flag; }); @@ -127,12 +227,14 @@ describe("Contentstack Asset Tests", () => { }); }); - test('.addParam()', async () => { + test(".addParam()", async () => { const Query = Stack.Assets().Query(); - + try { - const assets = await Query.addParam('include_dimension', 'true').toJSON().find(); - expect(assets[0][0].hasOwnProperty('dimension')).toBeTruthy(); + const assets = await Query.addParam("include_dimension", "true") + .toJSON() + .find(); + expect(assets[0][0].hasOwnProperty("dimension")).toBeTruthy(); } catch (err) { console.error("Error:", err); fail(".addParam()"); @@ -140,66 +242,82 @@ describe("Contentstack Asset Tests", () => { }); describe("comparison", () => { - test('.lessThan()', async () => { - const Query = Stack.Assets().Query(); - const field = 'file_size'; + describe(".lessThan()", () => { + const field = "file_size"; const value = 5122; - try { - const assets = await Query.lessThan('file_size', value).toJSON().find(); - + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.lessThan(field, value).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - + }); + + test("should return only assets with file_size less than the specified value", async () => { if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].slice(1).every((asset) => { - const flag = (asset[field] < value); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); + const allAssetsMatchCondition = assets[0].every( + (asset) => asset[field] < value + ); + expect(allAssetsMatchCondition).toBe(true); + } else { + console.warn("No assets returned to verify lessThan condition"); } - } catch (err) { - console.error("Error:", err); - fail(".lessThan()"); - } + }); }); - test('.lessThanOrEqualTo()', async () => { - const Query = Stack.Assets().Query(); - const field = 'updated_at'; - try { - const assets = await Query.lessThanOrEqualTo('file_size', 5122).toJSON().find(); - + describe(".lessThanOrEqualTo()", () => { + const field = "file_size"; + const value = 5122; + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.lessThanOrEqualTo(field, value).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - + }); + + test("should return only assets with file_size less than or equal to the specified value", async () => { if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); + const allAssetsMatchCondition = assets[0].every( + (asset) => asset[field] <= value + ); + expect(allAssetsMatchCondition).toBe(true); + } else { + console.warn( + "No assets returned to verify lessThanOrEqualTo condition" + ); } - } catch (err) { - console.error("Error:", err); - fail(".lessThanOrEqualTo()"); - } + }); }); - test('.greaterThan()', async () => { + test(".greaterThan()", async () => { const Query = Stack.Assets().Query(); - const field = 'file_size'; + const field = "file_size"; const value = 5122; try { - const assets = await Query.greaterThan('file_size', value).ascending(field).toJSON().find(); - + const assets = await Query.greaterThan("file_size", value) + .ascending(field) + .toJSON() + .find(); + expect(assets[0].length).toBeTruthy(); - + if (assets && assets.length && assets[0].length) { let prev = assets[0][0][field]; const _assets = assets[0].slice(1).every((asset) => { - const flag = (asset[field] > value); + const flag = asset[field] > value; prev = asset[field]; return flag; }); @@ -210,19 +328,22 @@ describe("Contentstack Asset Tests", () => { } }); - test('.greaterThanOrEqualTo()', async () => { + test(".greaterThanOrEqualTo()", async () => { const Query = Stack.Assets().Query(); - const field = 'file_size'; + const field = "file_size"; const value = 5122; try { - const assets = await Query.greaterThanOrEqualTo('file_size', 5122).descending(field).toJSON().find(); - + const assets = await Query.greaterThanOrEqualTo("file_size", 5122) + .descending(field) + .toJSON() + .find(); + expect(assets[0].length).toBeTruthy(); - + if (assets && assets.length && assets[0].length) { let prev = assets[0][0][field]; const _assets = assets[0].every((asset) => { - const flag = (asset[field] >= value); + const flag = asset[field] >= value; prev = asset[field]; return flag; }); @@ -234,120 +355,218 @@ describe("Contentstack Asset Tests", () => { } }); - test('.notEqualTo()', async () => { - const Query = Stack.Assets().Query(); - const field = 'file_size'; + describe(".notEqualTo()", () => { + const field = "file_size"; const value = 5122; - try { - const assets = await Query.notEqualTo('file_size', value).descending(field).toJSON().find(); - + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.notEqualTo(field, value) + .descending(field) + .toJSON() + .find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - + }); + + test("should return only assets with file_size not equal to the specified value", async () => { if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] != value); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); + const allAssetsMatchCondition = assets[0].every( + (asset) => asset[field] !== value + ); + expect(allAssetsMatchCondition).toBe(true); + } else { + console.warn("No assets returned to verify notEqualTo condition"); } - } catch (err) { - console.error("Error:", err); - fail(".notEqualTo()"); - } + }); }); - test('.where()', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.where('title', "image1").toJSON().find(); - + describe(".where()", () => { + const title = "image1"; + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.where("title", title).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); + }); + + test("should return exactly one asset matching the title", async () => { expect(assets[0].length).toBe(1); - } catch (err) { - console.error("Error:", err); - fail(".where()"); - } - }); + }); - test('.equalTo() compare boolean value (true)', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.language('en-us').equalTo('is_dir', false).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - expect(assets[0].length).toBe(5); - } catch (err) { - console.error("Error:", err); - fail(".where()"); - } + test("should return only assets with the specified title", async () => { + if (assets && assets.length && assets[0].length) { + const matchingTitle = assets[0].every( + (asset) => asset.title === title + ); + expect(matchingTitle).toBe(true); + } else { + console.warn("No assets returned to verify where condition"); + } + }); }); - test('.equalTo() compare boolean value (false)', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.equalTo('is_dir', true).toJSON().find(); - - expect(assets[0].length).toBeFalsy(); - expect(assets[0].length).toBe(0); - } catch (err) { - console.error("Error:", err); - fail(".where() boolean value having false"); - } + describe(".equalTo() with boolean values", () => { + describe("when comparing with false", () => { + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.language("en-us") + .equalTo("is_dir", false) + .toJSON() + .find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); + expect(assets[0].length).toBeTruthy(); + }); + + test("should return exactly 5 assets matching the condition", async () => { + expect(assets[0].length).toBe(5); + }); + + test("should return only assets with is_dir set to false", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsMatchCondition = assets[0].every( + (asset) => asset.is_dir === false + ); + expect(allAssetsMatchCondition).toBe(true); + } else { + console.warn("No assets returned to verify equalTo condition"); + } + }); + }); + + describe("when comparing with true", () => { + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.equalTo("is_dir", true).toJSON().find(); + }); + + test("should return an empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); + expect(assets[0].length).toBe(0); + }); + }); }); }); describe("Array/Subset Tests", () => { - test('.containedIn()', async () => { - const Query = Stack.Assets().Query(); + describe(".containedIn()", () => { const _in = ["image1", "image2"]; - const field = 'updated_at'; - try { - const assets = await Query.containedIn('title', _in).toJSON().find(); - + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.containedIn("title", _in).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - + }); + + test("should return only assets with titles contained in the specified array", async () => { if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (_in.indexOf(asset['title']) != -1); + const allAssetsMatchCondition = assets[0].every((asset) => { + return _in.indexOf(asset["title"]) !== -1; }); - expect(_assets).toBe(true); + expect(allAssetsMatchCondition).toBe(true); + } else { + console.warn("No assets returned to verify containedIn condition"); } - } catch (err) { - console.error("Error:", err); - fail(".containedIn()"); - } + }); + + test("should include at least one asset with each of the specified titles", async () => { + if (assets && assets.length && assets[0].length) { + // Check if at least one asset exists for each title in the array + const foundTitles = _in.filter((title) => + assets[0].some((asset) => asset.title === title) + ); + expect(foundTitles.length).toBe(_in.length); + } else { + console.warn("No assets returned to verify all titles are present"); + } + }); }); - test('.notContainedIn()', async () => { - const Query = Stack.Assets().Query(); + describe(".notContainedIn()", () => { const _in = ["image1", "image2"]; - try { - const assets = await Query.notContainedIn('title', _in).toJSON().find(); - + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.notContainedIn("title", _in).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".notContainedIn()"); - } + }); + + test("should return only assets with titles not contained in the specified array", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsMatchCondition = assets[0].every((asset) => { + return _in.indexOf(asset["title"]) === -1; + }); + expect(allAssetsMatchCondition).toBe(true); + } else { + console.warn("No assets returned to verify notContainedIn condition"); + } + }); + + test("should not include any assets with the specified titles", async () => { + if (assets && assets.length && assets[0].length) { + const foundForbiddenTitles = assets[0].filter((asset) => + _in.includes(asset.title) + ); + expect(foundForbiddenTitles.length).toBe(0); + } else { + console.warn("No assets returned to verify excluded titles"); + } + }); }); }); describe("Element Existence Tests", () => { - test('.exists()', async () => { + test(".exists()", async () => { const Query = Stack.Assets().Query(); const queryField = "is_dir"; - const field = 'updated_at'; + const field = "updated_at"; try { const assets = await Query.exists(queryField).toJSON().find(); - + expect(assets[0].length).toBeTruthy(); - + if (assets && assets.length && assets[0].length) { let prev = assets[0][0][field]; const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); + const flag = asset[field] <= prev; prev = asset[field]; return flag; }); @@ -359,19 +578,19 @@ describe("Contentstack Asset Tests", () => { } }); - test('.notExists()', async () => { + test(".notExists()", async () => { const Query = Stack.Assets().Query(); const queryField = "is_dir"; - const field = 'updated_at'; + const field = "updated_at"; try { const assets = await Query.notExists(queryField).toJSON().find(); expect(assets[0].length).toBeFalsy(); - + if (assets && assets.length && assets[0].length) { let prev = assets[0][0][field]; const _assets = assets[0].every((asset) => { - return (asset[field] <= prev); + return asset[field] <= prev; }); expect(_assets).toBe(true); } @@ -383,20 +602,20 @@ describe("Contentstack Asset Tests", () => { }); describe("Pagination Tests", () => { - test('.skip()', async () => { + test(".skip()", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at'; + const field = "updated_at"; try { const allassets = await Query.toJSON().find(); const assets = await Stack.Assets().Query().skip(1).toJSON().find(); - + expect(assets[0].length >= 2).toBeTruthy(); expect(allassets[0].slice(1)).toEqual(assets[0]); - + if (assets && assets.length && assets[0].length) { let prev = assets[0][0][field]; const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); + const flag = asset[field] <= prev; prev = asset[field]; return flag; }); @@ -408,20 +627,20 @@ describe("Contentstack Asset Tests", () => { } }); - test('.limit()', async () => { + test(".limit()", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at'; + const field = "updated_at"; try { const allassets = await Query.toJSON().find(); const assets = await Stack.Assets().Query().limit(2).toJSON().find(); - + expect(assets[0].length).toBeTruthy(); expect(allassets[0].slice(0, 2)).toEqual(assets[0]); - + if (assets && assets.length && assets[0] && assets[0].length) { let prev = assets[0][0][field]; const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); + const flag = asset[field] <= prev; prev = asset[field]; return flag; }); @@ -433,7 +652,7 @@ describe("Contentstack Asset Tests", () => { } }); - test('.count()', async () => { + test(".count()", async () => { const Query = Stack.Assets().Query(); try { const count = await Query.count().toJSON().find(); @@ -446,209 +665,450 @@ describe("Contentstack Asset Tests", () => { }); describe("Logical Operators Tests", () => { - test('.or() - Query Objects', async () => { - const Query1 = Stack.Assets().Query().where('title', 'image1'); - const Query2 = Stack.Assets().Query().where('is_dir', true); - const Query = Stack.Assets().Query(); - try { - const assets = await Query.or(Query1, Query2).toJSON().find(); - + describe(".or() - Query Objects", () => { + let assets; + const title = "image1"; + const isDir = true; + + beforeAll(async () => { + const Query1 = Stack.Assets().Query().where("title", title); + const Query2 = Stack.Assets().Query().where("is_dir", isDir); + const Query = Stack.Assets().Query(); + assets = await Query.or(Query1, Query2).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - + }); + + test("should return only assets matching at least one of the specified conditions", async () => { if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (~(asset.title === 'source1' || asset.is_dir === true)); - }); - expect(_assets).toBeTruthy(); + const allAssetsMatchCondition = assets[0].every( + (asset) => asset.title === title || asset.is_dir === isDir + ); + expect(allAssetsMatchCondition).toBe(true); + } else { + console.warn("No assets returned to verify OR condition"); } - } catch (err) { - console.error("Error:", err); - fail(".or() - Query Objects"); - } + }); + + test("should include at least one asset matching the title condition", async () => { + if (assets && assets.length && assets[0].length) { + const anyAssetMatchesTitleCondition = assets[0].some( + (asset) => asset.title === title + ); + expect(anyAssetMatchesTitleCondition).toBe(true); + } else { + console.warn("No assets returned to verify first condition"); + } + }); }); - test('.and() - Query Objects', async () => { - const Query1 = Stack.Assets().Query().where('title', 'image1'); - const Query2 = Stack.Assets().Query().where('is_dir', true); - const Query = Stack.Assets().Query(); - try { - const assets = await Query.and(Query1, Query2).toJSON().find(); - + describe(".and() - Query Objects", () => { + let assets; + const title = "image1"; + const isDir = true; + + beforeAll(async () => { + const Query1 = Stack.Assets().Query().where("title", title); + const Query2 = Stack.Assets().Query().where("is_dir", isDir); + const Query = Stack.Assets().Query(); + assets = await Query.and(Query1, Query2).toJSON().find(); + }); + + test("should return an empty array when conditions cannot be satisfied simultaneously", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeFalsy(); - + }); + + test("should verify that no assets match both conditions", async () => { if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (~(asset.title === 'image1' && asset.is_dir === true)); - }); - expect(_assets).toBeTruthy(); + const allAssetsMatchCondition = assets[0].every( + (asset) => asset.title === title && asset.is_dir === isDir + ); + expect(allAssetsMatchCondition).toBe(true); } - } catch (err) { - console.error("Error:", err); - fail(".and() - Query Objects"); - } + }); }); - test('.query() - Raw query', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.query({ "$or": [{ "title": "image2" }, { "is_dir": "true" }] }).toJSON().find(); - + describe(".query() - Raw query", () => { + let assets; + const title = "image2"; + const isDir = true; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.query({ + $or: [{ title: title }, { is_dir: isDir }], + }) + .toJSON() + .find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - + }); + + test("should return only assets matching at least one of the specified conditions", async () => { if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (asset.title === 'image2' || asset.is_dir === false) - }); - expect(_assets).toBeTruthy(); + const allAssetsMatchCondition = assets[0].every( + (asset) => asset.title === title || asset.is_dir === isDir + ); + expect(allAssetsMatchCondition).toBe(true); + } else { + console.warn("No assets returned to verify raw query conditions"); } - } catch (err) { - console.error("Error:", err); - fail(".query() - Raw query"); - } + }); + + test("should include at least one asset matching the title condition", async () => { + if (assets && assets.length && assets[0].length) { + const anyAssetMatchesTitleCondition = assets[0].some( + (asset) => asset.title === title + ); + expect(anyAssetMatchesTitleCondition).toBe(true); + } else { + console.warn("No assets returned to verify first condition"); + } + }); }); }); describe("Tags Tests", () => { - test('.tags() - empty results', async () => { - const Query = Stack.Assets().Query(); + describe(".tags() - empty results", () => { + let assets; const tags = ["asset3"]; - try { - const assets = await Query.tags(tags).toJSON().find(); - - expect(assets.length >= 1).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - expect(assets[0].length).toBe(0); - } - } catch (err) { - console.error("Error:", err); - fail(".tags()"); - } + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.tags(tags).toJSON().find(); + }); + + test("should return a properly structured response", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets.length).toBeGreaterThanOrEqual(1); + }); + + test("should return an empty array when no assets match the tags", async () => { + expect(assets[0]).toBeDefined(); + expect(assets[0].length).toBe(0); + }); }); - test('.tags() - with results', async () => { - const Query = Stack.Assets().Query(); - const field = 'tags'; + describe(".tags() - with results", () => { + let assets; + const field = "tags"; const tags = ["asset1", "asset2"]; - try { - const assets = await Query.tags(tags).toJSON().find(); - - expect(assets.length >= 1).toBeTruthy(); - + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.tags(tags).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets.length).toBeGreaterThanOrEqual(1); + expect(assets[0]).toBeDefined(); + expect(assets[0].length).toBeTruthy(); + }); + + test("should return only assets with at least one matching tag", async () => { if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (Utils.arrayPresentInArray(tags, asset[field])); + const allAssetsHaveMatchingTags = assets[0].every((asset) => { + return Utils.arrayPresentInArray(tags, asset[field]); }); - expect(_assets).toBe(true); + expect(allAssetsHaveMatchingTags).toBe(true); + } else { + console.warn("No assets returned to verify tags"); } - } catch (err) { - console.error("Error:", err); - fail(".tags()"); - } + }); + + test("should include assets with tags that overlap with the specified tags", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveOverlappingTags = assets[0].every((asset) => { + // Check that asset tags overlap with requested tags + return asset[field].some((tag) => tags.includes(tag)); + }); + expect(allAssetsHaveOverlappingTags).toBe(true); + } else { + console.warn("No assets returned to verify tag overlap"); + } + }); }); }); describe("Search Tests", () => { - test('.search()', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.toJSON().search('image1').find(); + describe(".search()", () => { + let assets; + const searchTerm = "image1"; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.toJSON().search(searchTerm).find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".search()"); - } + }); + + test("should return assets matching the search term", async () => { + if (assets && assets.length && assets[0].length) { + // Verify that each asset contains the search term in some field + // This is a simplified check since search can match across multiple fields + const anyAssetMatchesSearchTerm = assets[0].some( + (asset) => + asset.title.includes(searchTerm) || + (asset.description && asset.description.includes(searchTerm)) + ); + expect(anyAssetMatchesSearchTerm).toBe(true); + } else { + console.warn("No assets returned to verify search results"); + } + }); }); - test('.regex()', async () => { - const Query = Stack.Assets().Query(); - const field = 'title'; + describe(".regex()", () => { + let assets; + const field = "title"; const regex = { - pattern: '^image', - options: 'i' + pattern: "^image", + options: "i", }; const regexpObj = new RegExp(regex.pattern, regex.options); - try { - const assets = await Query.regex(field, regex.pattern, regex.options).toJSON().find(); - - expect(assets.length >= 1).toBeTruthy(); - - const flag = assets[0].every((asset) => { - return regexpObj.test(asset[field]); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".regex()"); - } + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.regex(field, regex.pattern, regex.options) + .toJSON() + .find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets.length).toBeGreaterThanOrEqual(1); + expect(assets[0]).toBeDefined(); + expect(assets[0].length).toBeTruthy(); + }); + + test("should return only assets with titles matching the regex pattern", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsTitlesMatchRegex = assets[0].every((asset) => { + return regexpObj.test(asset[field]); + }); + expect(allAssetsTitlesMatchRegex).toBe(true); + } else { + console.warn("No assets returned to verify regex match"); + } + }); + + test('should include assets whose titles start with "image"', async () => { + if (assets && assets.length && assets[0].length) { + const allTitlesStartWithImage = assets[0].every((asset) => + asset.title.toLowerCase().startsWith("image") + ); + expect(allTitlesStartWithImage).toBe(true); + } else { + console.warn("No assets returned to verify specific regex pattern"); + } + }); }); }); describe("Include Options", () => { - test('.includeCount()', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.includeCount().toJSON().find(); - + describe(".includeCount()", () => { + let assets; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.includeCount().toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); + }); + + test("should include count information in the result", async () => { + expect(assets[1]).toBeDefined(); expect(assets[1]).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".includeCount()"); - } + }); + + test("should return count as a number", async () => { + expect(typeof assets[1]).toBe("number"); + }); + + test("should return count equal to the number of returned assets", async () => { + expect(assets[1]).toBeGreaterThanOrEqual(assets[0].length); + }); }); }); describe("Field Projections", () => { - test('.only() - Single String Parameter', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.only('title').toJSON().find(); - + describe(".only() - Single String Parameter", () => { + let assets; + const selectedField = "title"; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.only(selectedField).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - - const flag = assets[0].every((asset) => { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Single String Parameter"); - } + }); + + test("should include the selected field in each asset", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveSelectedField = assets[0].every( + (asset) => selectedField in asset + ); + expect(allAssetsHaveSelectedField).toBe(true); + } else { + console.warn("No assets returned to verify field projection"); + } + }); + + test("should include system fields along with the selected field", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveRequiredFields = assets[0].every( + (asset) => "title" in asset && "uid" in asset && "url" in asset + ); + expect(allAssetsHaveRequiredFields).toBe(true); + } else { + console.warn("No assets returned to verify system fields"); + } + }); + + test("should limit the total number of fields in each asset", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveLimitedFields = assets[0].every( + (asset) => Object.keys(asset).length === 5 + ); + expect(allAssetsHaveLimitedFields).toBe(true); + } else { + console.warn("No assets returned to verify field count"); + } + }); }); - test('.only() - Multiple String Parameter', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.only('BASE', 'title').toJSON().find(); - + describe(".only() - Multiple String Parameters", () => { + let assets; + const selectedFields = ["BASE", "title"]; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.only(...selectedFields) + .toJSON() + .find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - - const flag = assets[0].every((asset) => { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Multiple String Parameter"); - } + }); + + test("should include the title field in each asset", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveTitle = assets[0].every( + (asset) => "title" in asset + ); + expect(allAssetsHaveTitle).toBe(true); + } else { + console.warn("No assets returned to verify field projection"); + } + }); + + test("should include system fields in each asset", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveSystemFields = assets[0].every( + (asset) => "uid" in asset && "url" in asset + ); + expect(allAssetsHaveSystemFields).toBe(true); + } else { + console.warn("No assets returned to verify system fields"); + } + }); + + test("should limit the total number of fields in each asset", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveLimitedFields = assets[0].every( + (asset) => Object.keys(asset).length === 5 + ); + expect(allAssetsHaveLimitedFields).toBe(true); + } else { + console.warn("No assets returned to verify field count"); + } + }); }); - test('.only() - Array Parameter', async () => { - const Query = Stack.Assets().Query(); - try { - const assets = await Query.only(['title', 'filename']).toJSON().find(); - + describe(".only() - Array Parameter", () => { + let assets; + const selectedFields = ["title", "filename"]; + + beforeAll(async () => { + const Query = Stack.Assets().Query(); + assets = await Query.only(selectedFields).toJSON().find(); + }); + + test("should return a non-empty array of assets", async () => { + expect(assets).toBeDefined(); + expect(Array.isArray(assets)).toBe(true); + expect(assets[0]).toBeDefined(); expect(assets[0].length).toBeTruthy(); - - const flag = assets[0].every((asset) => { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "filename" in asset && "uid" in asset && "url" in asset); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Array Parameter"); - } + }); + + test("should include all the selected fields in each asset", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveSelectedFields = assets[0].every((asset) => + selectedFields.every((field) => field in asset) + ); + expect(allAssetsHaveSelectedFields).toBe(true); + } else { + console.warn("No assets returned to verify field projection"); + } + }); + + test("should include system fields in each asset", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveSystemFields = assets[0].every( + (asset) => "uid" in asset && "url" in asset + ); + expect(allAssetsHaveSystemFields).toBe(true); + } else { + console.warn("No assets returned to verify system fields"); + } + }); + + test("should limit the total number of fields in each asset", async () => { + if (assets && assets.length && assets[0].length) { + const allAssetsHaveLimitedFields = assets[0].every( + (asset) => Object.keys(asset).length === 5 + ); + expect(allAssetsHaveLimitedFields).toBe(true); + } else { + console.warn("No assets returned to verify field count"); + } + }); }); }); -}); \ No newline at end of file +}); diff --git a/test/asset/find.js b/test/asset/find.js index 5758917f..ea2aee3c 100755 --- a/test/asset/find.js +++ b/test/asset/find.js @@ -1,10 +1,10 @@ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const Contentstack = require('../../dist/node/contentstack.js'); -const init = require('../config.js'); -const Utils = require('../entry/utils.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const init = require("../config.js"); +const Utils = require("../entry/utils.js"); let Stack; @@ -19,674 +19,564 @@ describe("Contentstack Asset Tests", () => { }); describe("Language and Fallback Tests", () => { - test('default .find() No fallback', async () => { - const _in = ['ja-jp']; - - try { - const assets = await Stack.Assets().Query().language('ja-jp').toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - expect(assets[1]).toBeFalsy(); - - if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (_in.indexOf(asset['publish_details']['locale']) !== -1); - }); - expect(_assets).toBe(true); - } - } catch (error) { - console.error("Error:", error); - fail("asset default .find() fallback catch: " + error.toString()); - } - }); + test("default .find() No fallback", async () => { + const _in = ["ja-jp"]; + + const assets = await Stack.Assets() + .Query() + .language("ja-jp") + .toJSON() + .find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeFalsy(); - test('default .find() fallback', async () => { - const _in = ['ja-jp', 'en-us']; - - try { - const assets = await Stack.Assets().Query().language('ja-jp').includeFallback().toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - expect(assets[1]).toBeFalsy(); - - if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (_in.indexOf(asset['publish_details']['locale']) !== -1); - }); - expect(_assets).toBe(true); - } - } catch (error) { - console.error("Error:", error); - fail("asset default .find() fallback catch: " + error.toString()); + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return _in.indexOf(asset["publish_details"]["locale"]) !== -1; + }); + expect(_assets).toBe(true); } }); - }); - test('default .find()', async () => { - const Query = Stack.Assets().Query(); - const field = 'updated_at'; - - try { - const assets = await Query.toJSON().find(); - + test("default .find() fallback", async () => { + const _in = ["ja-jp", "en-us"]; + + const assets = await Stack.Assets() + .Query() + .language("ja-jp") + .includeFallback() + .toJSON() + .find(); + expect(assets[0].length).toBeTruthy(); expect(assets[1]).toBeFalsy(); - + if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); - prev = asset[field]; - return flag; + return _in.indexOf(asset["publish_details"]["locale"]) !== -1; }); expect(_assets).toBe(true); } - } catch (err) { - console.error("Error:", err); - fail("asset default .find()"); + }); + }); + + test("default .find()", async () => { + const Query = Stack.Assets().Query(); + const field = "updated_at"; + const assets = await Query.toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] <= prev; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); describe("Sorting", () => { - test('.ascending()', async () => { + test(".ascending()", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at'; - - try { - const assets = await Query.ascending(field).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] >= prev); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".ascending()"); + const field = "updated_at"; + + const assets = await Query.ascending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] >= prev; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.descending()', async () => { + test(".descending()", async () => { const Query = Stack.Assets().Query(); - const field = 'created_at'; - - try { - const assets = await Query.descending(field).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".descending()"); + const field = "created_at"; + + const assets = await Query.descending(field).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] <= prev; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); }); describe("Params", () => { - test('.addParam()', async () => { + test(".addParam()", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.addParam('include_dimension', 'true').toJSON().find(); - expect(assets[0][0].hasOwnProperty('dimension')).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".addParam()"); - } + + const assets = await Query.addParam("include_dimension", "true") + .toJSON() + .find(); + expect(assets[0][0].hasOwnProperty("dimension")).toBeTruthy(); }); }); describe("Comparison", () => { - test('.lessThan()', async () => { + test(".lessThan()", async () => { const Query = Stack.Assets().Query(); - const field = 'file_size'; + const field = "file_size"; const value = 5122; - - try { - const assets = await Query.lessThan('file_size', value).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].slice(1).every((asset) => { - const flag = (asset[field] < value); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".lessThan()"); + + const assets = await Query.lessThan("file_size", value).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].slice(1).every((asset) => { + const flag = asset[field] < value; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.lessThanOrEqualTo()', async () => { + test(".lessThanOrEqualTo()", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at'; - - try { - const assets = await Query.lessThanOrEqualTo('file_size', 5122).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".lessThanOrEqualTo()"); + const field = "updated_at"; + + const assets = await Query.lessThanOrEqualTo("file_size", 5122) + .toJSON() + .find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] <= prev; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.greaterThan()', async () => { + test(".greaterThan()", async () => { const Query = Stack.Assets().Query(); - const field = 'file_size'; + const field = "file_size"; const value = 5122; - - try { - const assets = await Query.greaterThan('file_size', value).ascending(field).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].slice(1).every((asset) => { - const flag = (asset[field] > value); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - fail(".greaterThan()"); + + const assets = await Query.greaterThan("file_size", value) + .ascending(field) + .toJSON() + .find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].slice(1).every((asset) => { + const flag = asset[field] > value; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.greaterThanOrEqualTo()', async () => { + test(".greaterThanOrEqualTo()", async () => { const Query = Stack.Assets().Query(); - const field = 'file_size'; + const field = "file_size"; const value = 5122; - - try { - const assets = await Query.greaterThanOrEqualTo('file_size', value).descending(field).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] >= value); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".greaterThanOrEqualTo()"); + + const assets = await Query.greaterThanOrEqualTo("file_size", value) + .descending(field) + .toJSON() + .find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] >= value; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.notEqualTo()', async () => { + test(".notEqualTo()", async () => { const Query = Stack.Assets().Query(); - const field = 'file_size'; + const field = "file_size"; const value = 5122; - - try { - const assets = await Query.notEqualTo('file_size', value).descending(field).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] != value); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".notEqualTo()"); + + const assets = await Query.notEqualTo("file_size", value) + .descending(field) + .toJSON() + .find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] != value; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.where()', async () => { + test(".where()", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.where('title', "image1").toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - expect(assets[0].length).toBe(1); - } catch (err) { - console.error("Error:", err); - fail(".where()"); - } + + const assets = await Query.where("title", "image1").toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[0].length).toBe(1); }); - test('.equalTo() compare boolean value (true)', async () => { + test(".equalTo() compare boolean value (true)", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.language('en-us').equalTo('is_dir', false).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - expect(assets[0].length).toBe(5); - } catch (err) { - console.error("Error:", err); - fail(".where()"); - } + + const assets = await Query.language("en-us") + .equalTo("is_dir", false) + .toJSON() + .find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[0].length).toBe(5); }); - test('.equalTo() compare boolean value (false)', async () => { + test(".equalTo() compare boolean value (false)", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.equalTo('is_dir', true).toJSON().find(); - - expect(assets[0].length).toBeFalsy(); - expect(assets[0].length).toBe(0); - } catch (err) { - console.error("Error:", err); - fail(".where() boolean value having false"); - } + + const assets = await Query.equalTo("is_dir", true).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + expect(assets[0].length).toBe(0); }); }); describe("Array/Subset Tests", () => { - test('.containedIn()', async () => { + test(".containedIn()", async () => { const Query = Stack.Assets().Query(); const _in = ["image1", "image2"]; - const field = 'updated_at'; - - try { - const assets = await Query.containedIn('title', _in).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (_in.indexOf(asset['title']) != -1); - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".containedIn()"); + const field = "updated_at"; + + const assets = await Query.containedIn("title", _in).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return _in.indexOf(asset["title"]) != -1; + }); + expect(_assets).toBe(true); } }); - test('.notContainedIn()', async () => { + test(".notContainedIn()", async () => { const Query = Stack.Assets().Query(); const _in = ["image1", "image2"]; - - try { - const assets = await Query.notContainedIn('title', _in).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".notContainedIn()"); - } + + const assets = await Query.notContainedIn("title", _in).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); }); }); describe("Element Existence Tests", () => { - test('.exists()', async () => { + test(".exists()", async () => { const Query = Stack.Assets().Query(); const queryField = "is_dir"; - const field = 'updated_at'; - - try { - const assets = await Query.exists(queryField).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".exists()"); + const field = "updated_at"; + + const assets = await Query.exists(queryField).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] <= prev; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.notExists()', async () => { + test(".notExists()", async () => { const Query = Stack.Assets().Query(); const queryField = "is_dir"; - const field = 'updated_at'; - - try { - const assets = await Query.notExists(queryField).toJSON().find(); - - expect(assets[0].length).toBeFalsy(); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - return (asset[field] <= prev); - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".notExists()"); + const field = "updated_at"; + + const assets = await Query.notExists(queryField).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + return asset[field] <= prev; + }); + expect(_assets).toBe(true); } }); }); describe("Pagination Tests", () => { - test('.skip()', async () => { + test(".skip()", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at'; - - try { - const allassets = await Query.toJSON().find(); - const assets = await Stack.Assets().Query().skip(1).toJSON().find(); - - expect(assets[0].length >= 2).toBeTruthy(); - expect(allassets[0].slice(1)).toEqual(assets[0]); - - if (assets && assets.length && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".skip()"); + const field = "updated_at"; + + const allassets = await Query.toJSON().find(); + const assets = await Stack.Assets().Query().skip(1).toJSON().find(); + + expect(assets[0].length >= 2).toBeTruthy(); + expect(allassets[0].slice(1)).toEqual(assets[0]); + + if (assets && assets.length && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] <= prev; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.limit()', async () => { + test(".limit()", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at'; - - try { - const allassets = await Query.toJSON().find(); - const assets = await Stack.Assets().Query().limit(2).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - expect(allassets[0].slice(0, 2)).toEqual(assets[0]); - - if (assets && assets.length && assets[0] && assets[0].length) { - let prev = assets[0][0][field]; - const _assets = assets[0].every((asset) => { - const flag = (asset[field] <= prev); - prev = asset[field]; - return flag; - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".limit()"); + const field = "updated_at"; + + const allassets = await Query.toJSON().find(); + const assets = await Stack.Assets().Query().limit(2).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(allassets[0].slice(0, 2)).toEqual(assets[0]); + + if (assets && assets.length && assets[0] && assets[0].length) { + let prev = assets[0][0][field]; + const _assets = assets[0].every((asset) => { + const flag = asset[field] <= prev; + prev = asset[field]; + return flag; + }); + expect(_assets).toBe(true); } }); - test('.count()', async () => { + test(".count()", async () => { const Query = Stack.Assets().Query(); - - try { - const count = await Query.count().toJSON().find(); - expect(count).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".count()"); - } + + const count = await Query.count().toJSON().find(); + expect(count).toBeTruthy(); }); }); describe("Logical Operators Tests", () => { - test('.or() - Query Objects', async () => { - const Query1 = Stack.Assets().Query().where('title', 'image1'); - const Query2 = Stack.Assets().Query().where('is_dir', true); + test(".or() - Query Objects", async () => { + const Query1 = Stack.Assets().Query().where("title", "image1"); + const Query2 = Stack.Assets().Query().where("is_dir", true); const Query = Stack.Assets().Query(); - - try { - const assets = await Query.or(Query1, Query2).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (~(asset.title === 'source1' || asset.is_dir === true)); - }); - expect(_assets).toBeTruthy(); - } - } catch (err) { - console.error("Error:", err); - fail(".or() - Query Objects"); + + const assets = await Query.or(Query1, Query2).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return ~(asset.title === "source1" || asset.is_dir === true); + }); + expect(_assets).toBeTruthy(); } }); - test('.and() - Query Objects', async () => { - const Query1 = Stack.Assets().Query().where('title', 'image1'); - const Query2 = Stack.Assets().Query().where('is_dir', true); + test(".and() - Query Objects", async () => { + const Query1 = Stack.Assets().Query().where("title", "image1"); + const Query2 = Stack.Assets().Query().where("is_dir", true); const Query = Stack.Assets().Query(); - - try { - const assets = await Query.and(Query1, Query2).toJSON().find(); - - expect(assets[0].length).toBeFalsy(); - - if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (~(asset.title === 'image1' && asset.is_dir === true)); - }); - expect(_assets).toBeTruthy(); - } - } catch (err) { - console.error("Error:", err); - fail(".and() - Query Objects"); + + const assets = await Query.and(Query1, Query2).toJSON().find(); + + expect(assets[0].length).toBeFalsy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return ~(asset.title === "image1" && asset.is_dir === true); + }); + expect(_assets).toBeTruthy(); } }); - test('.query() - Raw query', async () => { + test(".query() - Raw query", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.query({ "$or": [{ "title": "image2" }, { "is_dir": "true" }] }).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (asset.title === 'image2' || asset.is_dir === false); - }); - expect(_assets).toBeTruthy(); - } - } catch (err) { - console.error("Error:", err); - fail(".query() - Raw query"); + + const assets = await Query.query({ + $or: [{ title: "image2" }, { is_dir: "true" }], + }) + .toJSON() + .find(); + + expect(assets[0].length).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return asset.title === "image2" || asset.is_dir === false; + }); + expect(_assets).toBeTruthy(); } }); }); describe("Tags Tests", () => { - test('.tags() - empty results', async () => { + test(".tags() - empty results", async () => { const Query = Stack.Assets().Query(); const tags = ["asset3"]; - - try { - const assets = await Query.tags(tags).toJSON().find(); - - expect(assets.length >= 1).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - expect(assets[0].length).toBe(0); - } - } catch (err) { - console.error("Error:", err); - fail(".tags()"); + + const assets = await Query.tags(tags).toJSON().find(); + + expect(assets.length >= 1).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + expect(assets[0].length).toBe(0); } }); - test('.tags() - with results', async () => { + test(".tags() - with results", async () => { const Query = Stack.Assets().Query(); - const field = 'tags'; + const field = "tags"; const tags = ["asset1", "asset2"]; - - try { - const assets = await Query.tags(tags).toJSON().find(); - - expect(assets.length >= 1).toBeTruthy(); - - if (assets && assets.length && assets[0].length) { - const _assets = assets[0].every((asset) => { - return (Utils.arrayPresentInArray(tags, asset[field])); - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail(".tags()"); + + const assets = await Query.tags(tags).toJSON().find(); + + expect(assets.length >= 1).toBeTruthy(); + + if (assets && assets.length && assets[0].length) { + const _assets = assets[0].every((asset) => { + return Utils.arrayPresentInArray(tags, asset[field]); + }); + expect(_assets).toBe(true); } }); }); describe("Search Tests", () => { - test('.search()', async () => { + test(".search()", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.toJSON().search('image1').find(); - expect(assets[0].length).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".search()"); - } + + const assets = await Query.toJSON().search("image1").find(); + expect(assets[0].length).toBeTruthy(); }); - test('.regex()', async () => { + test(".regex()", async () => { const Query = Stack.Assets().Query(); - const field = 'title'; + const field = "title"; const regex = { - pattern: '^image', - options: 'i' + pattern: "^image", + options: "i", }; const regexpObj = new RegExp(regex.pattern, regex.options); - - try { - const assets = await Query.regex(field, regex.pattern, regex.options).toJSON().find(); - - expect(assets.length >= 1).toBeTruthy(); - - const flag = assets[0].every((asset) => { - return regexpObj.test(asset[field]); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".regex()"); - } + + const assets = await Query.regex(field, regex.pattern, regex.options) + .toJSON() + .find(); + + expect(assets.length >= 1).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return regexpObj.test(asset[field]); + }); + expect(flag).toBeTruthy(); }); }); describe("Include Options", () => { - test('.includeCount()', async () => { + test(".includeCount()", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.includeCount().toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - expect(assets[1]).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".includeCount()"); - } + + const assets = await Query.includeCount().toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + expect(assets[1]).toBeTruthy(); }); }); describe("Field Projections", () => { - test('.only() - Single String Parameter', async () => { + test(".only() - Single String Parameter", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.only('title').toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - const flag = assets[0].every((asset) => { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Single String Parameter"); - } + + const assets = await Query.only("title").toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return ( + asset && + Object.keys(asset).length === 5 && + "title" in asset && + "uid" in asset && + "url" in asset + ); + }); + expect(flag).toBeTruthy(); }); - test('.only() - Multiple String Parameter', async () => { + test(".only() - Multiple String Parameter", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.only('BASE', 'title').toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - const flag = assets[0].every((asset) => { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "uid" in asset && 'url' in asset); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Multiple String Parameter"); - } + + const assets = await Query.only("BASE", "title").toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return ( + asset && + Object.keys(asset).length === 5 && + "title" in asset && + "uid" in asset && + "url" in asset + ); + }); + expect(flag).toBeTruthy(); }); - test('.only() - Array Parameter', async () => { + test(".only() - Array Parameter", async () => { const Query = Stack.Assets().Query(); - - try { - const assets = await Query.only(['title', 'filename']).toJSON().find(); - - expect(assets[0].length).toBeTruthy(); - - const flag = assets[0].every((asset) => { - return (asset && Object.keys(asset).length === 5 && "title" in asset && "filename" in asset && "uid" in asset && "url" in asset); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Array Parameter"); - } + + const assets = await Query.only(["title", "filename"]).toJSON().find(); + + expect(assets[0].length).toBeTruthy(); + + const flag = assets[0].every((asset) => { + return ( + asset && + Object.keys(asset).length === 5 && + "title" in asset && + "filename" in asset && + "uid" in asset && + "url" in asset + ); + }); + expect(flag).toBeTruthy(); }); }); -}); \ No newline at end of file +}); diff --git a/test/asset/spread.js b/test/asset/spread.js index e494eae2..6fe9b0d1 100755 --- a/test/asset/spread.js +++ b/test/asset/spread.js @@ -1,12 +1,12 @@ /** * Created by Aamod Pisat on 09-06-2017. */ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const Contentstack = require('../../dist/node/contentstack.js'); -const init = require('../config.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const init = require("../config.js"); let Stack; @@ -20,60 +20,44 @@ describe("Contentstack Asset Tests", () => { }); }); - test('assets as first argument', async () => { + test("assets as first argument", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at'; + const field = "updated_at"; - try { - const result = await Query - .limit(1) - .toJSON() - .find(); - - const assets = result[0]; // Using array destructuring - - expect(assets.length).toBeTruthy(); - - if (assets && assets.length) { - let prev = assets[0][field]; - const _assets = assets.every((asset) => { - prev = asset[field]; - return (asset[field] <= prev); - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail("assets as first argument test failed"); + const result = await Query.limit(1).toJSON().find(); + + const assets = result[0]; // Using array destructuring + + expect(assets.length).toBeTruthy(); + + if (assets && assets.length) { + let prev = assets[0][field]; + const _assets = assets.every((asset) => { + prev = asset[field]; + return asset[field] <= prev; + }); + expect(_assets).toBe(true); } }); - test('with assets and count argument', async () => { + test("with assets and count argument", async () => { const Query = Stack.Assets().Query(); - const field = 'updated_at'; - - try { - const result = await Query - .includeCount() - .toJSON() - .find(); - - const [assets, count] = result; // Using array destructuring - - expect(assets.length).toBeTruthy(); - expect(count).toBeTruthy(); - - if (assets && assets.length) { - let prev = assets[0][field]; - const _assets = assets.every((asset) => { - prev = asset[field]; - return (asset[field] <= prev); - }); - expect(_assets).toBe(true); - } - } catch (err) { - console.error("Error:", err); - fail("with assets and count argument test failed"); + const field = "updated_at"; + + const result = await Query.includeCount().toJSON().find(); + + const [assets, count] = result; // Using array destructuring + + expect(assets.length).toBeTruthy(); + expect(count).toBeTruthy(); + + if (assets && assets.length) { + let prev = assets[0][field]; + const _assets = assets.every((asset) => { + prev = asset[field]; + return asset[field] <= prev; + }); + expect(_assets).toBe(true); } }); -}); \ No newline at end of file +}); diff --git a/test/entry/find-result-wrapper.js b/test/entry/find-result-wrapper.js index 531358a7..a62e73a1 100755 --- a/test/entry/find-result-wrapper.js +++ b/test/entry/find-result-wrapper.js @@ -20,16 +20,28 @@ describe("ContentStack SDK Tests", () => { }); }); - test("default .find()", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe("default .find()", () => { + let entries; const field = "updated_at"; - try { - const entries = await Query.toJSON().find(); + // Setup - run the query once for all tests + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.toJSON().find(); + }); + test("should return a non-empty array of entries", async () => { + expect(entries).toBeDefined(); + expect(Array.isArray(entries)).toBe(true); + expect(entries[0]).toBeDefined(); expect(entries[0].length).toBeTruthy(); + }); + + test("should not include count when not requested", async () => { expect(entries[1]).toBeFalsy(); + }); + test("should return entries sorted by updated_at in descending order by default", async () => { if (entries && entries.length && entries[0].length) { let prev = entries[0][0][field]; const _entries = entries[0].every(function (entry) { @@ -37,11 +49,21 @@ describe("ContentStack SDK Tests", () => { return entry.updated_at <= prev; }); expect(_entries).toBe(true); + } else { + console.warn("Not enough entries returned to verify default sorting"); } - } catch (err) { - console.error("error:", err); - fail("default .find()"); - } + }); + + test("should have entries with valid structure", async () => { + if (entries && entries.length && entries[0].length) { + const firstEntry = entries[0][0]; + expect(firstEntry).toHaveProperty("uid"); + expect(firstEntry).toHaveProperty("title"); + expect(firstEntry).toHaveProperty("updated_at"); + } else { + console.warn("No entries returned to verify structure"); + } + }); }); describe("sorting", () => { @@ -49,22 +71,17 @@ describe("ContentStack SDK Tests", () => { const Query = Stack.ContentType(contentTypes.source).Query(); const field = "updated_at"; - try { - const entries = await Query.ascending(field).toJSON().find(); + const entries = await Query.ascending(field).toJSON().find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - prev = entry[field]; - return entry[field] >= prev; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".ascending()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + prev = entry[field]; + return entry[field] >= prev; + }); + expect(_entries).toBe(true); } }); @@ -72,22 +89,17 @@ describe("ContentStack SDK Tests", () => { const Query = Stack.ContentType(contentTypes.source).Query(); const field = "created_at"; - try { - const entries = await Query.descending(field).toJSON().find(); + const entries = await Query.descending(field).toJSON().find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - prev = entry[field]; - return entry[field] >= prev; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".descending()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + prev = entry[field]; + return entry[field] >= prev; + }); + expect(_entries).toBe(true); } }); }); @@ -100,25 +112,18 @@ describe("ContentStack SDK Tests", () => { const value = 11; const field = "updated_at"; - try { - const entries = await Query.lessThan("num_field", value) - .toJSON() - .find(); + const entries = await Query.lessThan("num_field", value).toJSON().find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].slice(1).every(function (entry) { - const flag = entry[field] < value; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".lessThan()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].slice(1).every(function (entry) { + const flag = entry[field] < value; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); @@ -129,25 +134,20 @@ describe("ContentStack SDK Tests", () => { const field = "updated_at"; const value = 11; - try { - const entries = await Query.lessThanOrEqualTo("num_field", value) - .toJSON() - .find(); + const entries = await Query.lessThanOrEqualTo("num_field", value) + .toJSON() + .find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - const flag = entry[field] <= prev; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".lessThanOrEqualTo()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); @@ -158,26 +158,21 @@ describe("ContentStack SDK Tests", () => { const field = "num_field"; const value = 11; - try { - const entries = await Query.greaterThan("num_field", value) - .ascending(field) - .toJSON() - .find(); + const entries = await Query.greaterThan("num_field", value) + .ascending(field) + .toJSON() + .find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].slice(1).every(function (entry) { - const flag = entry[field] > value; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".greaterThan()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].slice(1).every(function (entry) { + const flag = entry[field] > value; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); @@ -188,26 +183,21 @@ describe("ContentStack SDK Tests", () => { const field = "num_field"; const value = 11; - try { - const entries = await Query.greaterThanOrEqualTo("num_field", value) - .descending(field) - .toJSON() - .find(); + const entries = await Query.greaterThanOrEqualTo("num_field", value) + .descending(field) + .toJSON() + .find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - const flag = entry[field] >= value; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".greaterThanOrEqualTo()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] >= value; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); @@ -218,26 +208,21 @@ describe("ContentStack SDK Tests", () => { const field = "num_field"; const value = 6; - try { - const entries = await Query.notEqualTo("num_field", value) - .descending(field) - .toJSON() - .find(); + const entries = await Query.notEqualTo("num_field", value) + .descending(field) + .toJSON() + .find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - const flag = entry[field] != value; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".notEqualTo()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] != value; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); }); @@ -248,20 +233,15 @@ describe("ContentStack SDK Tests", () => { const _in = ["source1", "source2"]; const field = "updated_at"; - try { - const entries = await Query.containedIn("title", _in).toJSON().find(); + const entries = await Query.containedIn("title", _in).toJSON().find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - const _entries = entries[0].every(function (entry) { - return _in.indexOf(entry["title"]) != -1; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".containedIn()"); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return _in.indexOf(entry["title"]) != -1; + }); + expect(_entries).toBe(true); } }); @@ -269,16 +249,9 @@ describe("ContentStack SDK Tests", () => { const Query = Stack.ContentType(contentTypes.source).Query(); const _in = ["sourceddd1", "sourceddddd2"]; - try { - const entries = await Query.notContainedIn("title", _in) - .toJSON() - .find(); + const entries = await Query.notContainedIn("title", _in).toJSON().find(); - expect(entries[0].length).toBeTruthy(); - } catch (err) { - console.error("error:", err); - fail(".notContainedIn()"); - } + expect(entries[0].length).toBeTruthy(); }); }); @@ -288,23 +261,18 @@ describe("ContentStack SDK Tests", () => { const queryField = "boolean"; const field = "updated_at"; - try { - const entries = await Query.exists(queryField).toJSON().find(); + const entries = await Query.exists(queryField).toJSON().find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - const flag = entry[field] <= prev; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".exists()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); @@ -313,21 +281,16 @@ describe("ContentStack SDK Tests", () => { const queryField = "isspecial"; const field = "updated_at"; - try { - const entries = await Query.notExists(queryField).toJSON().find(); + const entries = await Query.notExists(queryField).toJSON().find(); - expect("entries" in entries).toBeTruthy(); + expect("entries" in entries).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - return entry[field] <= prev; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".notExists()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + return entry[field] <= prev; + }); + expect(_entries).toBe(true); } }); }); @@ -337,31 +300,26 @@ describe("ContentStack SDK Tests", () => { const Query = Stack.ContentType(contentTypes.source).Query(); const field = "updated_at"; - try { - const allEntries = await Query.toJSON().find(); + const allEntries = await Query.toJSON().find(); - const entries = await Stack.ContentType(contentTypes.source) - .Query() - .skip(1) - .toJSON() - .find(); + const entries = await Stack.ContentType(contentTypes.source) + .Query() + .skip(1) + .toJSON() + .find(); - expect(entries[0].length).toBeGreaterThanOrEqual(2); - expect(allEntries[0].slice(1)).toEqual(entries[0]); + expect(entries[0].length).toBeGreaterThanOrEqual(2); + expect(allEntries[0].slice(1)).toEqual(entries[0]); - if (entries && entries.length && entries[0].length) { - allEntries[0] = allEntries[0].slice(1); - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - const flag = entry[field] <= prev; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".skip()"); + if (entries && entries.length && entries[0].length) { + allEntries[0] = allEntries[0].slice(1); + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); @@ -369,194 +327,365 @@ describe("ContentStack SDK Tests", () => { const Query = Stack.ContentType(contentTypes.source).Query(); const field = "updated_at"; - try { - const allEntries = await Query.toJSON().find(); + const allEntries = await Query.toJSON().find(); - const entries = await Stack.ContentType(contentTypes.source) - .Query() - .limit(2) - .toJSON() - .find(); + const entries = await Stack.ContentType(contentTypes.source) + .Query() + .limit(2) + .toJSON() + .find(); - expect(entries[0].length).toBeTruthy(); - expect(allEntries[0].slice(0, 2)).toEqual(entries[0]); + expect(entries[0].length).toBeTruthy(); + expect(allEntries[0].slice(0, 2)).toEqual(entries[0]); - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - const flag = entry[field] <= prev; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".limit()"); + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); test(".count()", async () => { const Query = Stack.ContentType(contentTypes.source).Query(); - try { - const entries = await Query.count().toJSON().find(); + const entries = await Query.count().toJSON().find(); - expect(entries[0]).toBeTruthy(); - } catch (err) { - console.error("error:", err); - fail(".count()"); - } + expect(entries[0]).toBeTruthy(); }); }); describe("logical", () => { - test(".or() - Query Objects", async () => { - const Query1 = Stack.ContentType(contentTypes.source) - .Query() - .containedIn("title", ["source1", "source2"]); - const Query2 = Stack.ContentType(contentTypes.source) - .Query() - .where("boolean", true); - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".or() - Query Objects", () => { + let entries; + const titles = ["source1", "source2"]; + + beforeAll(async () => { + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .containedIn("title", titles); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); - try { - const entries = await Query.or(Query1, Query2).toJSON().find(); + entries = await Query.or(Query1, Query2).toJSON().find(); + }); + test("should return a non-empty array of entries", async () => { + expect(entries).toBeDefined(); + expect(Array.isArray(entries)).toBe(true); + expect(entries[0]).toBeDefined(); expect(entries[0].length).toBeTruthy(); + }); + test("should return entries matching at least one of the conditions", async () => { if (entries && entries.length && entries[0].length) { - const _entries = entries[0].every(function (entry) { - return ~(entry.title === "source1" || entry.boolean === true); - }); - expect(_entries).toBeTruthy(); + const allEntriesMatchAnyCondition = entries[0].every( + (entry) => titles.includes(entry.title) || entry.boolean === true + ); + expect(allEntriesMatchAnyCondition).toBe(true); + } else { + console.warn("No entries returned to verify OR condition"); } - } catch (err) { - console.error("error:", err); - fail(".or() - Query Objects"); - } + }); + + test("should include entries with title in the specified list", async () => { + if (entries && entries.length && entries[0].length) { + const hasEntryWithTitle = entries[0].some((entry) => + titles.includes(entry.title) + ); + expect(hasEntryWithTitle).toBe(true); + } else { + console.warn("No entries returned to verify first condition"); + } + }); + + test("should include entries with boolean field set to true", async () => { + if (entries && entries.length && entries[0].length) { + const hasEntryWithBoolean = entries[0].some( + (entry) => entry.boolean === true + ); + expect(hasEntryWithBoolean).toBe(true); + } else { + console.warn("No entries returned to verify second condition"); + } + }); }); - test(".and() - Query Objects", async () => { - const Query1 = Stack.ContentType(contentTypes.source) - .Query() - .where("title", "source1"); - const Query2 = Stack.ContentType(contentTypes.source) - .Query() - .where("boolean", true); - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".and() - Query Objects", () => { + let entries; + + beforeAll(async () => { + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .where("title", "source1"); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); - try { - const entries = await Query.and(Query1, Query2).toJSON().find(); + entries = await Query.and(Query1, Query2).toJSON().find(); + }); + test("should return a non-empty array of entries", async () => { + expect(entries).toBeDefined(); + expect(Array.isArray(entries)).toBe(true); + expect(entries[0]).toBeDefined(); expect(entries[0].length).toBeTruthy(); + }); + test("should return only entries matching all specified conditions", async () => { if (entries && entries.length && entries[0].length) { - const _entries = entries[0].every(function (entry) { - return ~(entry.title === "source1" || entry.boolean === true); - }); - expect(_entries).toBeTruthy(); + const allEntriesMatchAllConditions = entries[0].every( + (entry) => entry.title === "source1" && entry.boolean === true + ); + expect(allEntriesMatchAllConditions).toBe(true); + } else { + console.warn("No entries returned to verify AND condition"); } - } catch (err) { - console.error("error:", err); - fail(".and() - Query Objects"); - } + }); + + test('should include entries with title set to "source1"', async () => { + if (entries && entries.length && entries[0].length) { + const allEntriesHaveCorrectTitle = entries[0].every( + (entry) => entry.title === "source1" + ); + expect(allEntriesHaveCorrectTitle).toBe(true); + } else { + console.warn("No entries returned to verify title condition"); + } + }); + + test("should include entries with boolean field set to true", async () => { + if (entries && entries.length && entries[0].length) { + const allEntriesHaveBooleanTrue = entries[0].every( + (entry) => entry.boolean === true + ); + expect(allEntriesHaveBooleanTrue).toBe(true); + } else { + console.warn("No entries returned to verify boolean condition"); + } + }); }); - test(".and() - Raw queries", async () => { - const Query1 = Stack.ContentType(contentTypes.source) - .Query() - .where("title", "source1"); - const Query2 = Stack.ContentType(contentTypes.source) - .Query() - .where("boolean", true); - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".query() - Raw query", () => { + let entries; - try { - const entries = await Query.and(Query1, Query2).toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.query({ + $or: [{ title: "source1" }, { boolean: true }], + }) + .toJSON() + .find(); + }); + test("should return a non-empty array of entries", async () => { + expect(entries).toBeDefined(); + expect(Array.isArray(entries)).toBe(true); + expect(entries[0]).toBeDefined(); expect(entries[0].length).toBeTruthy(); + }); + test("should return entries matching at least one of the conditions in the raw query", async () => { if (entries && entries.length && entries[0].length) { - const _entries = entries[0].every(function (entry) { - return ~(entry.title === "source1" || entry.boolean === true); - }); - expect(_entries).toBeTruthy(); + const allEntriesMatchAnyCondition = entries[0].every( + (entry) => entry.title === "source1" || entry.boolean === true + ); + expect(allEntriesMatchAnyCondition).toBe(true); + } else { + console.warn("No entries returned to verify raw query conditions"); } - } catch (err) { - console.error("error:", err); - fail(".and() - Raw queries"); - } + }); + + test('should include entries with title "source1"', async () => { + if (entries && entries.length && entries[0].length) { + const hasEntryWithTitle = entries[0].some( + (entry) => entry.title === "source1" + ); + expect(hasEntryWithTitle).toBe(true); + } else { + console.warn( + "No entries returned to verify first raw query condition" + ); + } + }); + + test("should include entries with boolean field set to true", async () => { + if (entries && entries.length && entries[0].length) { + const hasEntryWithBoolean = entries[0].some( + (entry) => entry.boolean === true + ); + expect(hasEntryWithBoolean).toBe(true); + } else { + console.warn( + "No entries returned to verify second raw query condition" + ); + } + }); }); }); describe("custom query", () => { - test(".query() - Raw query", async () => { + test(".query() - Raw query with basic OR condition", async () => { const Query = Stack.ContentType(contentTypes.source).Query(); - try { - const entries = await Query.query({ - $or: [{ title: "source1" }, { boolean: "true" }], - }) - .toJSON() - .find(); + const entries = await Query.query({ + $or: [{ title: "source1" }, { boolean: "true" }], + }) + .toJSON() + .find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - const _entries = entries[0].every(function (entry) { - return entry.title === "source1" || entry.boolean === true; - }); - expect(_entries).toBeTruthy(); - } - } catch (err) { - console.error("error:", err); - fail(".query() - Raw query"); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return entry.title === "source1" || entry.boolean === true; + }); + expect(_entries).toBeTruthy(); } }); + + test(".query() - Raw query with AND condition", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + const entries = await Query.query({ + $and: [{ title: "source1" }, { boolean: true }], + }) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + + const allMatchBothConditions = entries[0].every( + (entry) => entry.title === "source1" && entry.boolean === true + ); + expect(allMatchBothConditions).toBeTruthy(); + }); + + test(".query() - Raw query with nested conditions", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + const entries = await Query.query({ + $and: [ + { title: "source1" }, + { $or: [{ boolean: true }, { url: { $exists: true } }] }, + ], + }) + .toJSON() + .find(); + + expect(entries[0].length).toBeTruthy(); + + const allMatchConditions = entries[0].every( + (entry) => + entry.title === "source1" && + (entry.boolean === true || entry.url !== undefined) + ); + expect(allMatchConditions).toBeTruthy(); + }); }); describe("tags", () => { - test(".tags()", async () => { + test(".tags() - Multiple tags filter", async () => { const Query = Stack.ContentType(contentTypes.source).Query(); const field = "tags"; const tags = ["tag1", "tag2"]; - try { - const entries = await Query.tags(tags).toJSON().find(); + const entries = await Query.tags(tags).toJSON().find(); - expect(entries.length).toBeGreaterThanOrEqual(1); + expect(entries.length).toBeGreaterThanOrEqual(1); - if (entries && entries.length && entries[0].length) { - const _entries = entries[0].every(function (entry) { - return Utils.arrayPresentInArray(tags, entry[field]); - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".tags()"); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return Utils.arrayPresentInArray(tags, entry[field]); + }); + expect(_entries).toBe(true); } }); + + test(".tags() - Single tag filter", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "tags"; + const tags = ["tag1"]; + + const entries = await Query.tags(tags).toJSON().find(); + + expect(entries.length).toBeGreaterThanOrEqual(1); + + if (entries && entries.length && entries[0].length) { + const entriesWithTag = entries[0].every( + (entry) => entry[field] && entry[field].includes(tags[0]) + ); + expect(entriesWithTag).toBe(true); + } + }); + + test(".tags() - Empty results with non-existent tag", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const nonExistentTag = ["non_existent_tag_123456"]; + + const entries = await Query.tags(nonExistentTag).toJSON().find(); + + // Should return an array but with empty results + expect(entries).toBeDefined(); + expect(Array.isArray(entries)).toBe(true); + expect(entries[0].length).toBe(0); + }); }); describe("search", () => { - test(".search()", async () => { + test(".search() - Exact match", async () => { const Query = Stack.ContentType(contentTypes.source).Query(); - try { - const entries = await Query.search("source1").toJSON().find(); + const entries = await Query.search("source1").toJSON().find(); - expect(entries[0].length).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".search()"); - } + expect(entries[0].length).toBeTruthy(); + + const hasMatchingEntries = entries[0].some( + (entry) => + entry.title === "source1" || JSON.stringify(entry).includes("source1") + ); + expect(hasMatchingEntries).toBe(true); + }); + + test(".search() - Partial match", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + const entries = await Query.search("source").toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + + const hasMatchingEntries = entries[0].some( + (entry) => + (entry.title && entry.title.includes("source")) || + JSON.stringify(entry).includes("source") + ); + expect(hasMatchingEntries).toBe(true); + }); + + test(".search() - Case insensitive match", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + + const entries = await Query.search("SOURCE1").toJSON().find(); + + expect(entries[0].length).toBeTruthy(); + + const hasMatchingEntries = entries[0].some( + (entry) => + (entry.title && entry.title.toLowerCase() === "source1") || + JSON.stringify(entry).toLowerCase().includes("source1") + ); + expect(hasMatchingEntries).toBe(true); }); }); describe("regex", () => { - test(".regex()", async () => { + test(".regex() - Basic pattern match", async () => { const Query = Stack.ContentType(contentTypes.source).Query(); const field = "title"; const regex = { @@ -565,462 +694,567 @@ describe("ContentStack SDK Tests", () => { }; const regexpObj = new RegExp(regex.pattern, regex.options); - try { - const entries = await Query.regex(field, regex.pattern, regex.options) - .toJSON() - .find(); + const entries = await Query.regex(field, regex.pattern, regex.options) + .toJSON() + .find(); - expect(entries.length).toBeGreaterThanOrEqual(1); + expect(entries.length).toBeGreaterThanOrEqual(1); - const flag = entries[0].every(function (entry) { - return regexpObj.test(entry[field]); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".regex()"); + const flag = entries[0].every(function (entry) { + return regexpObj.test(entry[field]); + }); + expect(flag).toBeTruthy(); + }); + + test(".regex() - Specific suffix pattern", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "title"; + const regex = { + pattern: "1$", // Matches strings ending with 1 + options: "", + }; + const regexpObj = new RegExp(regex.pattern, regex.options); + + const entries = await Query.regex(field, regex.pattern, regex.options) + .toJSON() + .find(); + + expect(entries.length).toBeGreaterThanOrEqual(1); + + if (entries && entries[0].length) { + const matchesPattern = entries[0].every((entry) => + regexpObj.test(entry[field]) + ); + expect(matchesPattern).toBeTruthy(); + + const endsWithOne = entries[0].every( + (entry) => entry[field] && entry[field].endsWith("1") + ); + expect(endsWithOne).toBeTruthy(); + } + }); + + test(".regex() - With wildcard pattern", async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + const field = "title"; + const regex = { + pattern: "source.*", + options: "i", + }; + const regexpObj = new RegExp(regex.pattern, regex.options); + + const entries = await Query.regex(field, regex.pattern, regex.options) + .toJSON() + .find(); + + expect(entries.length).toBeGreaterThanOrEqual(1); + + if (entries && entries[0].length) { + const matchesPattern = entries[0].every((entry) => + regexpObj.test(entry[field]) + ); + expect(matchesPattern).toBeTruthy(); } }); }); describe("locale and fallback", () => { - test("find: without fallback", async () => { - const _in = ["ja-jp"]; + test("find: with specific locale", async () => { + const locale = "ja-jp"; - try { - const entries = await Stack.ContentType(contentTypes.source) - .Query() - .language("ja-jp") - .toJSON() - .find(); + const entries = await Stack.ContentType(contentTypes.source) + .Query() + .language(locale) + .toJSON() + .find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - const _entries = entries[0].every(function (entry) { - return _in.indexOf(entry["publish_details"]["locale"]) != -1; - }); - expect(_entries).toBe(true); - } - } catch (error) { - fail("Entries default .find() fallback catch: " + error.toString()); + if (entries && entries.length && entries[0].length) { + const allEntriesInRequestedLocale = entries[0].every( + (entry) => + entry.publish_details && entry.publish_details.locale === locale + ); + expect(allEntriesInRequestedLocale).toBe(true); } }); - test("find: fallback", async () => { - const _in = ["ja-jp", "en-us"]; + test("find: with fallback enabled for partially localized content", async () => { + const primaryLocale = "ja-jp"; + const fallbackLocale = "en-us"; - try { - const entries = await Stack.ContentType(contentTypes.source) - .Query() - .language("ja-jp") - .includeFallback() - .toJSON() - .find(); + const entries = await Stack.ContentType(contentTypes.source) + .Query() + .language(primaryLocale) + .includeFallback() + .toJSON() + .find(); - expect(entries[0].length).toBeTruthy(); + expect(entries[0].length).toBeTruthy(); - if (entries && entries.length && entries[0].length) { - const _entries = entries[0].every(function (entry) { - return _in.indexOf(entry["publish_details"]["locale"]) != -1; - }); - expect(_entries).toBe(true); - } - } catch (error) { - fail("Entries default .find() fallback catch: " + error.toString()); + if (entries && entries.length && entries[0].length) { + const _entries = entries[0].every(function (entry) { + return [primaryLocale, fallbackLocale].includes( + entry.publish_details.locale + ); + }); + expect(_entries).toBe(true); + } + + if (entries && entries.length && entries[0].length > 1) { + const hasPrimaryLocaleEntries = entries[0].some( + (entry) => entry.publish_details.locale === primaryLocale + ); + + const hasFallbackLocaleEntries = entries[0].some( + (entry) => entry.publish_details.locale === fallbackLocale + ); + + expect(hasPrimaryLocaleEntries || hasFallbackLocaleEntries).toBe(true); + } + }); + + test("find: comparing results with and without fallback", async () => { + const locale = "ja-jp"; + + const entriesWithoutFallback = await Stack.ContentType( + contentTypes.source + ) + .Query() + .language(locale) + .toJSON() + .find(); + + const entriesWithFallback = await Stack.ContentType(contentTypes.source) + .Query() + .language(locale) + .includeFallback() + .toJSON() + .find(); + + expect(entriesWithFallback[0].length).toBeGreaterThanOrEqual( + entriesWithoutFallback[0].length + ); + + if (entriesWithoutFallback && entriesWithoutFallback[0].length) { + const allInRequestedLocale = entriesWithoutFallback[0].every( + (entry) => entry.publish_details.locale === locale + ); + expect(allInRequestedLocale).toBe(true); } }); }); describe("include reference", () => { - test(".includeReference() - String", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeReference() - String", () => { + let entries; - try { - const entries = await Query.includeReference("reference") - .toJSON() - .find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference").toJSON().find(); + }); - const flag = entries[0].every(function (entry) { - return ( + test("should return entries with the reference field", () => { + expect(entries[0].length).toBeGreaterThan(0); + }); + + test("should include the reference field as an object", () => { + const allEntriesHaveReference = entries[0].every( + (entry) => entry && entry["reference"] && typeof entry["reference"] === "object" - ); - }); - expect(flag).toBe(true); - } catch (err) { - console.error("Error:", err); - fail(".includeReference() - String"); - } + ); + expect(allEntriesHaveReference).toBe(true); + }); }); - test(".includeReference() - Array", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeReference() - Array", () => { + let entries; - try { - const entries = await Query.includeReference([ - "reference", - "other_reference", - ]) + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference(["reference", "other_reference"]) .toJSON() .find(); + }); - const flag = entries[0].every(function (entry) { - return ( + test("should return entries with data", () => { + expect(entries[0].length).toBeGreaterThan(0); + }); + + test("should include the first reference field as an object", () => { + const allEntriesHaveFirstReference = entries[0].every( + (entry) => entry && entry["reference"] && - typeof entry["reference"] === "object" && + typeof entry["reference"] === "object" + ); + expect(allEntriesHaveFirstReference).toBe(true); + }); + + test("should include the second reference field as an object", () => { + const allEntriesHaveSecondReference = entries[0].every( + (entry) => + entry && entry["other_reference"] && typeof entry["other_reference"] === "object" - ); - }); - expect(flag).toBe(true); - } catch (err) { - console.error("Error:", err); - fail(".includeReference() - Array"); - } + ); + expect(allEntriesHaveSecondReference).toBe(true); + }); }); }); describe("include count and schema", () => { - test(".includeCount()", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeCount()", () => { + let entries; - try { - const entries = await Query.includeCount().toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeCount().toJSON().find(); + }); + test("should return entries", () => { expect(entries[0].length).toBeTruthy(); + }); + + test("should include count information", () => { expect(entries[1]).toBeTruthy(); - } catch (err) { - console.error("error:", err); - fail(".includeCount()"); - } + }); }); - test(".includeSchema()", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeSchema()", () => { + let entries; - try { - const entries = await Query.includeSchema().toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeSchema().toJSON().find(); + }); + test("should return entries", () => { expect(entries[0].length).toBeTruthy(); + }); + + test("should include schema information", () => { expect(entries[1].length).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".includeSchema()"); - } + }); }); - test(".includeCount() and .includeSchema()", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeCount() and .includeSchema()", () => { + let entries; - try { - const entries = await Query.includeCount() - .includeSchema() - .toJSON() - .find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeCount().includeSchema().toJSON().find(); + }); + test("should return entries", () => { expect(entries[0].length).toBeTruthy(); + }); + + test("should include schema information", () => { expect(entries[1].length).toBeTruthy(); + }); + + test("should include count information", () => { expect(entries[2]).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".includeSchema()"); - } + }); }); }); describe("include contenttypes", () => { - test(".includeContentType()", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeContentType()", () => { + let entries; - try { - const entries = await Query.includeContentType().toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeContentType().toJSON().find(); + }); + test("should return entries", () => { expect(entries[0].length).toBeTruthy(); + }); + + test("should include content type information", () => { expect(entries[1]).toBeTruthy(); + }); + + test("should include content type title", () => { expect(entries[1]["title"]).toBeTruthy(); + }); + + test("should have the correct content type UID", () => { expect(entries[1]["uid"]).toBe(contentTypes.source); - } catch (err) { - console.error("error:", err); - fail(".includeContentType()"); - } + }); }); - test(".includeCount() and .includeContentType()", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeCount() and .includeContentType()", () => { + let entries; - try { - const entries = await Query.includeCount() + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeCount() .includeContentType() .toJSON() .find(); + }); + test("should return entries", () => { expect(entries[0].length).toBeTruthy(); + }); + + test("should include content type information", () => { expect(entries[1]).toBeTruthy(); + }); + + test("should include content type title", () => { expect(entries[1]["title"]).toBeTruthy(); + }); + + test("should have the correct content type UID", () => { expect(entries[1]["uid"]).toBe(contentTypes.source); + }); + + test("should include count information", () => { expect(entries[2]).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".includeCount && includeContentType"); - } + }); }); - test(".includeSchema() and .includeContentType()", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeSchema() and .includeContentType()", () => { + let entries; - try { - const entries = await Query.includeSchema() + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeSchema() .includeContentType() .toJSON() .find(); + }); + test("should return entries", () => { expect(entries[0].length).toBeTruthy(); + }); + + test("should include content type information", () => { expect(entries[1]).toBeTruthy(); + }); + + test("should include content type title", () => { expect(entries[1]["title"]).toBeTruthy(); + }); + + test("should have the correct content type UID", () => { expect(entries[1]["uid"]).toBe(contentTypes.source); - } catch (err) { - console.error("Error:", err); - fail(".includeCount && includeContentType"); - } + }); }); - test(".includeCount(), .includeSchema() and .includeContentType()", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".includeCount(), .includeSchema() and .includeContentType()", () => { + let entries; - try { - const entries = await Query.includeCount() + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeCount() .includeSchema() .includeContentType() .toJSON() .find(); + }); + test("should return entries", () => { expect(entries[0].length).toBeTruthy(); + }); + + test("should include content type information", () => { expect(entries[1]).toBeTruthy(); + }); + + test("should include content type title", () => { expect(entries[1]["title"]).toBeTruthy(); + }); + + test("should have the correct content type UID", () => { expect(entries[1]["uid"]).toBe(contentTypes.source); + }); + + test("should include count information", () => { expect(entries[2]).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".includeCount && includeContentType"); - } + }); }); }); describe("field projections", () => { - test(".only() - Single String Parameter", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".only() - Single String Parameter", () => { + let entries; - try { - const entries = await Query.only("title").toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only("title").toJSON().find(); + }); - const flag = entries[0].every(function (entry) { - return ( + test("should return entries", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("should include only the title and uid fields", () => { + const correctFieldsOnly = entries[0].every( + (entry) => entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry - ); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Single String Parameter"); - } + ); + expect(correctFieldsOnly).toBeTruthy(); + }); }); - test(".only() - Multiple String Parameter", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".only() - Multiple String Parameter", () => { + let entries; - try { - const entries = await Query.only("BASE", "title").toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only("BASE", "title").toJSON().find(); + }); - const flag = entries[0].every(function (entry) { - return ( + test("should return entries", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("should include only the title and uid fields", () => { + const correctFieldsOnly = entries[0].every( + (entry) => entry && Object.keys(entry).length === 2 && "title" in entry && "uid" in entry - ); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Multiple String Parameter"); - } + ); + expect(correctFieldsOnly).toBeTruthy(); + }); }); - test(".only() - Array Parameter", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".only() - Array Parameter", () => { + let entries; - try { - const entries = await Query.only(["title", "url"]).toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only(["title", "url"]).toJSON().find(); + }); - const flag = entries[0].every(function (entry) { - return ( + test("should return entries", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("should include only the title, url, and uid fields", () => { + const correctFieldsOnly = entries[0].every( + (entry) => entry && Object.keys(entry).length === 3 && "title" in entry && "url" in entry && "uid" in entry - ); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - Array Parameter"); - } + ); + expect(correctFieldsOnly).toBeTruthy(); + }); }); - test(".only() - For the reference - String", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".except() - Single String Parameter", () => { + let entries; - try { - const entries = await Query.includeReference("reference") - .only("BASE", ["reference"]) - .only("reference", "title") - .toJSON() - .find(); - - expect(entries).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - For the reference - String"); - } - }); - - test(".only() - For the reference - Array", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); - - try { - const entries = await Query.includeReference("reference") - .only("BASE", ["reference"]) - .only("reference", ["title"]) - .toJSON() - .find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except("title").toJSON().find(); + }); - expect(entries).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".only() - For the reference - Array"); - } + test("should return entries", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("should exclude the title field", () => { + const titleExcluded = entries[0].every( + (entry) => entry && !("title" in entry) + ); + expect(titleExcluded).toBeTruthy(); + }); }); - test(".except() - Single String Parameter", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".except() - Multiple String Parameter", () => { + let entries; - try { - const entries = await Query.except("title").toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except("BASE", "title").toJSON().find(); + }); - const flag = entries[0].every(function (entry) { - return entry && !("title" in entry); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".except() - Single String Parameter"); - } + test("should return entries", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("should exclude the title field", () => { + const titleExcluded = entries[0].every( + (entry) => entry && !("title" in entry) + ); + expect(titleExcluded).toBeTruthy(); + }); }); - test(".except() - Multiple String Parameter", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); + describe(".except() - Array of String Parameter", () => { + let entries; - try { - const entries = await Query.except("BASE", "title").toJSON().find(); + beforeAll(async () => { + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except(["title", "file"]).toJSON().find(); + }); - const flag = entries[0].every(function (entry) { - return entry && !("title" in entry); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".except() - Multiple String Parameter"); - } + test("should return entries", () => { + expect(entries[0].length).toBeTruthy(); + }); + + test("should exclude the title field", () => { + const titleExcluded = entries[0].every( + (entry) => entry && !("title" in entry) + ); + expect(titleExcluded).toBeTruthy(); + }); + + test("should exclude the file field", () => { + const fileExcluded = entries[0].every( + (entry) => entry && !("file" in entry) + ); + expect(fileExcluded).toBeTruthy(); + }); }); - test(".except() - Array of String Parameter", async () => { - const Query = Stack.ContentType(contentTypes.source).Query(); - - try { - const entries = await Query.except(["title", "file"]).toJSON().find(); + describe(".except() - For the reference - String", () => { + let entries; - const flag = entries[0].every(function (entry) { - return entry && !("title" in entry) && !("file" in entry); - }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".except() - Array of String Parameter"); - } - }); - test(".except() - For the reference - String", async () => { - try { + beforeAll(async () => { const Query = Stack.ContentType(contentTypes.source).Query(); - - const entries = await Query.includeReference("reference") + entries = await Query.includeReference("reference") .only("BASE", ["reference"]) .except("reference", "title") .toJSON() .find(); + }); - const flag = entries[0].every((entry) => { - let _flag; - if ( - entry && - entry["reference"] && - typeof entry["reference"] === "object" - ) { - _flag = true; - _flag = entry.reference.every((reference) => { - return reference && !("title" in reference); - }); - } else { - _flag = false; - } - return ( - _flag && - entry && - Object.keys(entry).length === 2 && - "reference" in entry && - "uid" in entry - ); - }); - - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".except() - For the reference - String"); - } - }); - - test(".except() - For the reference - Array", async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - - const entries = await Query.includeReference("reference") - .only("BASE", ["reference"]) - .except("reference", ["title"]) - .toJSON() - .find(); + test("should return entries", () => { + expect(entries[0].length).toBeTruthy(); + }); - const flag = entries[0].every((entry) => { - let _flag; + test("should properly format entries with reference but without title in references", () => { + const correctFormat = entries[0].every((entry) => { + let hasCorrectReferenceFormat = false; if ( entry && entry["reference"] && typeof entry["reference"] === "object" ) { - _flag = true; - _flag = entry.reference.every((reference) => { + hasCorrectReferenceFormat = true; + hasCorrectReferenceFormat = entry.reference.every((reference) => { return reference && !("title" in reference); }); - } else { - _flag = false; } + return ( - _flag && + hasCorrectReferenceFormat && entry && Object.keys(entry).length === 2 && "reference" in entry && @@ -1028,11 +1262,8 @@ describe("ContentStack SDK Tests", () => { ); }); - expect(flag).toBeTruthy(); - } catch (err) { - console.error("Error:", err); - fail(".except() - For the reference - Array"); - } + expect(correctFormat).toBeTruthy(); + }); }); }); }); diff --git a/test/entry/find.js b/test/entry/find.js index 081c80b7..07276a30 100755 --- a/test/entry/find.js +++ b/test/entry/find.js @@ -28,17 +28,12 @@ describe("ContentStack SDK Tests", () => { }); describe("Default Find", () => { - let entries + let entries; const field = "updated_at"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -68,13 +63,8 @@ describe("ContentStack SDK Tests", () => { const field = "updated_at"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.ascending(field).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.ascending(field).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -99,13 +89,8 @@ describe("ContentStack SDK Tests", () => { const field = "created_at"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.descending(field).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.descending(field).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -131,15 +116,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.addParam("include_count", "true") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.addParam("include_count", "true").toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -159,20 +137,14 @@ describe("ContentStack SDK Tests", () => { const value = 11; test("Should return entry in the resultset", async () => { - try { - const Query = Stack.ContentType( - contentTypes.numbers_content_type - ).Query(); + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); - const result = await Query.lessThan("num_field", value) - .toJSON() - .find(); + const result = await Query.lessThan("num_field", value).toJSON().find(); - entries = result; - expect(entries[0].length).toBeTruthy(); - } catch (err) { - fail("Query.lessThan failed"); - } + entries = result; + expect(entries[0].length).toBeTruthy(); }); test("All entries should have num_field less than specified value", () => { @@ -189,17 +161,12 @@ describe("ContentStack SDK Tests", () => { const value = 11; beforeAll(async () => { - try { - const Query = Stack.ContentType( - contentTypes.numbers_content_type - ).Query(); - entries = await Query.lessThanOrEqualTo("num_field", value) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entries = await Query.lessThanOrEqualTo("num_field", value) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -233,18 +200,13 @@ describe("ContentStack SDK Tests", () => { const value = 11; beforeAll(async () => { - try { - const Query = Stack.ContentType( - contentTypes.numbers_content_type - ).Query(); - entries = await Query.greaterThan("num_field", value) - .ascending(field) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entries = await Query.greaterThan("num_field", value) + .ascending(field) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -277,18 +239,13 @@ describe("ContentStack SDK Tests", () => { const value = 11; beforeAll(async () => { - try { - const Query = Stack.ContentType( - contentTypes.numbers_content_type - ).Query(); - entries = await Query.greaterThanOrEqualTo("num_field", value) - .descending(field) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entries = await Query.greaterThanOrEqualTo("num_field", value) + .descending(field) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -321,18 +278,13 @@ describe("ContentStack SDK Tests", () => { const value = 6; beforeAll(async () => { - try { - const Query = Stack.ContentType( - contentTypes.numbers_content_type - ).Query(); - entries = await Query.notEqualTo("num_field", value) - .descending(field) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entries = await Query.notEqualTo("num_field", value) + .descending(field) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -361,13 +313,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.where("boolean", true).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.where("boolean", true).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -388,13 +335,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.where("boolean", false).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.where("boolean", false).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -415,13 +357,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.where("title", "").toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.where("title", "").toJSON().find(); }); test("Should return zero entries in the resultset", () => { @@ -434,13 +371,8 @@ describe("ContentStack SDK Tests", () => { const tags = ["tag1", "tag2"]; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.tags(tags).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.tags(tags).toJSON().find(); }); test("Should return one or more entries in the resultset", () => { @@ -468,13 +400,8 @@ describe("ContentStack SDK Tests", () => { const field = "title"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.containedIn("title", _in).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.containedIn("title", _in).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -501,13 +428,8 @@ describe("ContentStack SDK Tests", () => { const field = "title"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.notContainedIn("title", _in).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.notContainedIn("title", _in).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -531,26 +453,20 @@ describe("ContentStack SDK Tests", () => { const Query = Stack.ContentType(contentTypes.source).Query(); const queryField = "boolean"; const field = "updated_at"; + const entries = await Query.exists(queryField).toJSON().find(); - try { - const entries = await Query.exists(queryField).toJSON().find(); - - // Check if entries are returned - expect(entries[0].length).toBeTruthy(); + // Check if entries are returned + expect(entries[0].length).toBeTruthy(); - // Verify sorting order (descending on updated_at) - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - const flag = entry[field] <= prev; - prev = entry[field]; - return flag; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".exists() test failed"); + // Verify sorting order (descending on updated_at) + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + const flag = entry[field] <= prev; + prev = entry[field]; + return flag; + }); + expect(_entries).toBe(true); } }); @@ -558,24 +474,18 @@ describe("ContentStack SDK Tests", () => { const Query = Stack.ContentType(contentTypes.source).Query(); const queryField = "isspecial"; const field = "updated_at"; + const entries = await Query.notExists(queryField).toJSON().find(); - try { - const entries = await Query.notExists(queryField).toJSON().find(); - - // Check if entries are returned - expect("entries" in entries).toBeTruthy(); + // Check if entries are returned + expect("entries" in entries).toBeTruthy(); - // Verify sorting order if entries exist - if (entries && entries.length && entries[0].length) { - let prev = entries[0][0][field]; - const _entries = entries[0].every(function (entry) { - return entry[field] <= prev; - }); - expect(_entries).toBe(true); - } - } catch (err) { - console.error("error:", err); - fail(".notExists() test failed"); + // Verify sorting order if entries exist + if (entries && entries.length && entries[0].length) { + let prev = entries[0][0][field]; + const _entries = entries[0].every(function (entry) { + return entry[field] <= prev; + }); + expect(_entries).toBe(true); } }); }); @@ -587,16 +497,11 @@ describe("ContentStack SDK Tests", () => { const field = "updated_at"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - allEntries = await Query.toJSON().find(); + const Query = Stack.ContentType(contentTypes.source).Query(); + allEntries = await Query.toJSON().find(); - const SkipQuery = Stack.ContentType(contentTypes.source).Query(); - skippedEntries = await SkipQuery.skip(1).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const SkipQuery = Stack.ContentType(contentTypes.source).Query(); + skippedEntries = await SkipQuery.skip(1).toJSON().find(); }); test("All entries should be present in the resultset", () => { @@ -635,16 +540,11 @@ describe("ContentStack SDK Tests", () => { const limitNumber = 2; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - allEntries = await Query.toJSON().find(); + const Query = Stack.ContentType(contentTypes.source).Query(); + allEntries = await Query.toJSON().find(); - const LimitQuery = Stack.ContentType(contentTypes.source).Query(); - limitedEntries = await LimitQuery.limit(limitNumber).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const LimitQuery = Stack.ContentType(contentTypes.source).Query(); + limitedEntries = await LimitQuery.limit(limitNumber).toJSON().find(); }); test("All entries should be present in the resultset", () => { @@ -680,13 +580,8 @@ describe("ContentStack SDK Tests", () => { let count; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - count = await Query.count().toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + count = await Query.count().toJSON().find(); }); test("Entries present in the resultset", () => { @@ -700,20 +595,15 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query1 = Stack.ContentType(contentTypes.source) - .Query() - .where("title", "source2"); - const Query2 = Stack.ContentType(contentTypes.source) - .Query() - .where("boolean", true); - const Query = Stack.ContentType(contentTypes.source).Query(); + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .where("title", "source2"); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.or(Query1, Query2).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entries = await Query.or(Query1, Query2).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -738,20 +628,15 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query1 = Stack.ContentType(contentTypes.source) - .Query() - .where("title", "source1"); - const Query2 = Stack.ContentType(contentTypes.source) - .Query() - .where("boolean", true); - const Query = Stack.ContentType(contentTypes.source).Query(); + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .where("title", "source1"); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.and(Query1, Query2).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entries = await Query.and(Query1, Query2).toJSON().find(); }); test("Should return one entry in the resultset", () => { @@ -772,17 +657,12 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.query({ - $or: [{ title: "source2" }, { boolean: "true" }], - }) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.query({ + $or: [{ title: "source2" }, { boolean: "true" }], + }) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -808,13 +688,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.toJSON().search("source2").find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.toJSON().search("source2").find(); }); test("Should return entries in the resultset", () => { @@ -828,16 +703,11 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.includeCount() - .includeContentType() - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeCount() + .includeContentType() + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -865,13 +735,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.includeEmbeddedItems().toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeEmbeddedItems().toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -883,16 +748,11 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.includeSchema() - .includeContentType() - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeSchema() + .includeContentType() + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -916,17 +776,12 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.includeCount() - .includeSchema() - .includeContentType() - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeCount() + .includeSchema() + .includeContentType() + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -957,16 +812,11 @@ describe("ContentStack SDK Tests", () => { const _in = ["ja-jp"]; beforeAll(async () => { - try { - entries = await Stack.ContentType(contentTypes.source) - .Query() - .language("ja-jp") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entries = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -988,17 +838,12 @@ describe("ContentStack SDK Tests", () => { const _in = ["ja-jp", "en-us"]; beforeAll(async () => { - try { - entries = await Stack.ContentType(contentTypes.source) - .Query() - .language("ja-jp") - .includeFallback() - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entries = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .includeFallback() + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1021,14 +866,9 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - entries = await Stack.getContentTypes({ - include_global_field_schema: true, - }); - } catch (err) { - error = err; - console.error("Error:", err); - } + entries = await Stack.getContentTypes({ + include_global_field_schema: true, + }); }); test("Global field schema should be present when applicable", () => { @@ -1048,13 +888,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.only("title").toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only("title").toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1076,13 +911,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.only("BASE", "title").toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only("BASE", "title").toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1104,13 +934,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.only(["title", "url"]).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.only(["title", "url"]).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1133,17 +958,12 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.includeReference("reference") - .only("BASE", ["reference"]) - .only("reference", "title") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .only("reference", "title") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1162,17 +982,12 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.includeReference("reference") - .only("BASE", ["reference"]) - .only("reference", ["title"]) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .only("reference", ["title"]) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1193,13 +1008,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.except("title").toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except("title").toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1218,13 +1028,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.except("BASE", "title").toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except("BASE", "title").toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1243,13 +1048,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.except(["title", "file"]).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.except(["title", "file"]).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1268,17 +1068,12 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.includeReference("reference") - .only("BASE", ["reference"]) - .except("reference", "title") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .except("reference", "title") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1324,17 +1119,12 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entries = await Query.includeReference("reference") - .only("BASE", ["reference"]) - .except("reference", ["title"]) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entries = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .except("reference", ["title"]) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1382,15 +1172,10 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.Taxonomies(); - entries = await Query.where("taxonomies.one", "term_one") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.Taxonomies(); + entries = await Query.where("taxonomies.one", "term_one") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1402,18 +1187,13 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.Taxonomies(); - entries = await Query.containedIn("taxonomies.one", [ - "term_one", - "term_two", - ]) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.Taxonomies(); + entries = await Query.containedIn("taxonomies.one", [ + "term_one", + "term_two", + ]) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1425,22 +1205,11 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query1 = Stack.Taxonomies().where( - "taxonomies.one", - "term_one" - ); - const Query2 = Stack.Taxonomies().where( - "taxonomies.two", - "term_two" - ); - const Query = Stack.Taxonomies(); + const Query1 = Stack.Taxonomies().where("taxonomies.one", "term_one"); + const Query2 = Stack.Taxonomies().where("taxonomies.two", "term_two"); + const Query = Stack.Taxonomies(); - entries = await Query.or(Query1, Query2).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entries = await Query.or(Query1, Query2).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1452,22 +1221,11 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query1 = Stack.Taxonomies().where( - "taxonomies.one", - "term_one" - ); - const Query2 = Stack.Taxonomies().where( - "taxonomies.two", - "term_two" - ); - const Query = Stack.Taxonomies(); + const Query1 = Stack.Taxonomies().where("taxonomies.one", "term_one"); + const Query2 = Stack.Taxonomies().where("taxonomies.two", "term_two"); + const Query = Stack.Taxonomies(); - entries = await Query.and(Query1, Query2).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entries = await Query.and(Query1, Query2).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1479,13 +1237,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.Taxonomies(); - entries = await Query.exists("taxonomies.one").toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.Taxonomies(); + entries = await Query.exists("taxonomies.one").toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1499,15 +1252,10 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType("source").Query(); - entries = await Query.where("taxonomies.one", "term_one") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType("source").Query(); + entries = await Query.where("taxonomies.one", "term_one") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1519,18 +1267,13 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType("source").Query(); - entries = await Query.containedIn("taxonomies.one", [ - "term_one", - "term_two", - ]) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType("source").Query(); + entries = await Query.containedIn("taxonomies.one", [ + "term_one", + "term_two", + ]) + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1542,20 +1285,15 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query1 = Stack.ContentType("source") - .Query() - .where("taxonomies.one", "term_one"); - const Query2 = Stack.ContentType("source") - .Query() - .where("taxonomies.two", "term_two"); - const Query = Stack.ContentType("source").Query(); - - entries = await Query.or(Query1, Query2).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query1 = Stack.ContentType("source") + .Query() + .where("taxonomies.one", "term_one"); + const Query2 = Stack.ContentType("source") + .Query() + .where("taxonomies.two", "term_two"); + const Query = Stack.ContentType("source").Query(); + + entries = await Query.or(Query1, Query2).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1567,20 +1305,15 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query1 = Stack.ContentType("source") - .Query() - .where("taxonomies.one", "term_one"); - const Query2 = Stack.ContentType("source") - .Query() - .where("taxonomies.two", "term_two"); - const Query = Stack.ContentType("source").Query(); - - entries = await Query.and(Query1, Query2).toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query1 = Stack.ContentType("source") + .Query() + .where("taxonomies.one", "term_one"); + const Query2 = Stack.ContentType("source") + .Query() + .where("taxonomies.two", "term_two"); + const Query = Stack.ContentType("source").Query(); + + entries = await Query.and(Query1, Query2).toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1592,13 +1325,8 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType("source").Query(); - entries = await Query.exists("taxonomies.one").toJSON().find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType("source").Query(); + entries = await Query.exists("taxonomies.one").toJSON().find(); }); test("Should return entries in the resultset", () => { @@ -1610,15 +1338,10 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType("source").Query(); - entries = await Query.equalAndBelow("taxonomies.one", "term_one") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType("source").Query(); + entries = await Query.equalAndBelow("taxonomies.one", "term_one") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1630,15 +1353,10 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType("source").Query(); - entries = await Query.below("taxonomies.one", "term_one") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType("source").Query(); + entries = await Query.below("taxonomies.one", "term_one") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1650,15 +1368,10 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType("source").Query(); - entries = await Query.equalAndAbove("taxonomies.one", "term_one") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType("source").Query(); + entries = await Query.equalAndAbove("taxonomies.one", "term_one") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1670,15 +1383,10 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType("source").Query(); - entries = await Query.above("taxonomies.one", "term_one_child") - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType("source").Query(); + entries = await Query.above("taxonomies.one", "term_one_child") + .toJSON() + .find(); }); test("Should return entries in the resultset", () => { @@ -1691,18 +1399,10 @@ describe("ContentStack SDK Tests", () => { let entries; beforeAll(async () => { - try { - const Query = Stack.ContentType("source").Query(); - entries = await Query.variants([ - "variant_entry_1", - "variant_entry_2", - ]) - .toJSON() - .find(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType("source").Query(); + entries = await Query.variants(["variant_entry_1", "variant_entry_2"]) + .toJSON() + .find(); }); test("Should return variant entries in the resultset", () => { @@ -1711,4 +1411,4 @@ describe("ContentStack SDK Tests", () => { }); }); }); -}); \ No newline at end of file +}); diff --git a/test/entry/findone-result-wrapper.js b/test/entry/findone-result-wrapper.js index 8f638951..af8e7774 100755 --- a/test/entry/findone-result-wrapper.js +++ b/test/entry/findone-result-wrapper.js @@ -1,304 +1,272 @@ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const Contentstack = require('../../dist/node/contentstack.js'); -const Utils = require('./utils.js'); -const init = require('../config.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const Utils = require("./utils.js"); +const init = require("../config.js"); const contentTypes = init.contentTypes; let Stack; -describe('FindOne Tests', () => { +describe("FindOne Tests", () => { // Setup - Initialize the Contentstack Stack Instance beforeAll((done) => { Stack = Contentstack.Stack(init.stack); Stack.setHost(init.host); setTimeout(done, 1000); }); - - describe('Default FindOne', () => { + + describe("Default FindOne", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.toJSON().findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); // SORTING TESTS - describe('Sorting', () => { - describe('Ascending', () => { + describe("Sorting", () => { + describe("Ascending", () => { let entry; let error = null; - const field = 'updated_at'; + const field = "updated_at"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.ascending(field).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.ascending(field).toJSON().findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); - describe('Descending', () => { + describe("Descending", () => { let entry; - let error = null; - const field = 'created_at'; + const field = "created_at"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.descending(field).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.descending(field).toJSON().findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); }); // COMPARISON TESTS - describe('Comparison', () => { - describe('lessThan', () => { + describe("Comparison", () => { + describe("lessThan", () => { let entry; let error = null; - const field = 'num_field'; + const field = "num_field"; const value = 11; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); - entry = await Query.lessThan(field, value).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entry = await Query.lessThan(field, value).toJSON().findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); - test('num_field should be less than specified value', () => { + test("num_field should be less than specified value", () => { expect(entry[field]).toBeLessThan(value); }); }); - describe('lessThanOrEqualTo', () => { + describe("lessThanOrEqualTo", () => { let entry; let error = null; - const field = 'num_field'; + const field = "num_field"; const value = 11; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); - entry = await Query.lessThanOrEqualTo(field, value).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entry = await Query.lessThanOrEqualTo(field, value).toJSON().findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); - test('num_field should be less than or equal to specified value', () => { + test("num_field should be less than or equal to specified value", () => { expect(entry[field]).toBeLessThanOrEqual(value); }); }); - describe('greaterThan', () => { + describe("greaterThan", () => { let entry; let error = null; - const field = 'num_field'; + const field = "num_field"; const value = 6; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); - entry = await Query.greaterThan(field, value).ascending(field).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entry = await Query.greaterThan(field, value) + .ascending(field) + .toJSON() + .findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); - test('num_field should be greater than specified value', () => { + test("num_field should be greater than specified value", () => { expect(entry[field]).toBeGreaterThan(value); }); }); - describe('greaterThanOrEqualTo', () => { + describe("greaterThanOrEqualTo", () => { let entry; let error = null; - const field = 'num_field'; + const field = "num_field"; const value = 11; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); - entry = await Query.greaterThanOrEqualTo(field, value).descending(field).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entry = await Query.greaterThanOrEqualTo(field, value) + .descending(field) + .toJSON() + .findOne(); }); - - test('Should return an entry with uid, locale, publish_details', () => { + + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); - test('num_field should be greater than or equal to specified value', () => { + test("num_field should be greater than or equal to specified value", () => { expect(entry[field]).toBeGreaterThanOrEqual(value); }); }); - describe('notEqualTo', () => { + describe("notEqualTo", () => { let entry; let error = null; - const field = 'num_field'; + const field = "num_field"; const value = 6; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); - entry = await Query.notEqualTo(field, value).descending(field).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entry = await Query.notEqualTo(field, value) + .descending(field) + .toJSON() + .findOne(); }); - test('num_field should not be equal to specified value', () => { + test("num_field should not be equal to specified value", () => { expect(entry[field]).not.toBe(value); }); - - test('Should return an entry with uid, locale, publish_details', () => { + + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); }); // ARRAY/SUBSET TESTS - describe('Array/Subset', () => { - describe('containedIn', () => { + describe("Array/Subset", () => { + describe("containedIn", () => { let entry; let error = null; const _in = ["source1", "source2"]; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.containedIn('title', _in).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.containedIn("title", _in).toJSON().findOne(); }); - test('Entry title should be in the specified values', () => { + test("Entry title should be in the specified values", () => { expect(_in).toContain(entry.title); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); - describe('notContainedIn', () => { + describe("notContainedIn", () => { let entry; let error = null; const _in = ["source1"]; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.notContainedIn('title', _in).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.notContainedIn("title", _in).toJSON().findOne(); }); - test('Should either return an entry with matching criteria or an expected error', () => { + test("Should either return an entry with matching criteria or an expected error", () => { if (entry) { expect(entry.title).toBeDefined(); expect(_in).not.toContain(entry.title); } else { - expect(error).toEqual({ - error_code: 141, - error_message: 'The requested entry doesn\'t exist.' + expect(error).toEqual({ + error_code: 141, + error_message: "The requested entry doesn't exist.", }); } }); - test('If entry exists, it should have uid', () => { + test("If entry exists, it should have uid", () => { if (entry) { expect(entry.uid).toBeDefined(); } }); - test('If entry exists, it should have locale', () => { + test("If entry exists, it should have locale", () => { if (entry) { expect(entry.locale).toBeDefined(); } }); - test('If entry exists, it should have publish_details', () => { + test("If entry exists, it should have publish_details", () => { if (entry) { expect(entry.publish_details).toBeDefined(); } @@ -307,564 +275,484 @@ describe('FindOne Tests', () => { }); // ELEMENT EXISTS TESTS - describe('Element Existence', () => { - describe('exists', () => { + describe("Element Existence", () => { + describe("exists", () => { let entry; let error = null; const queryField = "boolean"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.exists(queryField).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.exists(queryField).toJSON().findOne(); }); - test('Entry should have the queried field', () => { - expect(typeof entry[queryField]).not.toBe('undefined'); + test("Entry should have the queried field", () => { + expect(typeof entry[queryField]).not.toBe("undefined"); }); - - test('Should return an entry with uid, locale, publish_details', () => { + + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); - describe('notExists', () => { + describe("notExists", () => { let entry; let error = null; const queryField = "isspecial"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.notExists(queryField).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.notExists(queryField).toJSON().findOne(); }); - test('Should handle either success or error case', () => { + test("Should handle either success or error case", () => { if (entry) { - expect(typeof entry[queryField]).toBe('undefined'); + expect(typeof entry[queryField]).toBe("undefined"); } else { - expect(error).toEqual({ - error_code: 141, - error_message: 'The requested entry doesn\'t exist.' + expect(error).toEqual({ + error_code: 141, + error_message: "The requested entry doesn't exist.", }); } }); - - test('If entry exists, it should have uid', () => { + + test("If entry exists, it should have uid", () => { if (entry) { expect(entry.uid).toBeDefined(); } }); - test('If entry exists, it should have locale', () => { + test("If entry exists, it should have locale", () => { if (entry) { expect(entry.locale).toBeDefined(); } }); - test('If entry exists, it should have publish_details', () => { + test("If entry exists, it should have publish_details", () => { if (entry) { expect(entry.publish_details).toBeDefined(); } }); }); }); - describe('Pagination', () => { - describe('skip', () => { + describe("Pagination", () => { + describe("skip", () => { let allEntries; let skippedEntry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - allEntries = await Query.toJSON().find(); - - const skipQuery = Stack.ContentType(contentTypes.source).Query(); - skippedEntry = await skipQuery.skip(1).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + allEntries = await Query.toJSON().find(); + + const skipQuery = Stack.ContentType(contentTypes.source).Query(); + skippedEntry = await skipQuery.skip(1).toJSON().findOne(); }); - test('Should have entries in the result set', () => { + test("Should have entries in the result set", () => { expect(allEntries.length).toBeTruthy(); }); - test('Should get correct skipped entry', () => { + test("Should get correct skipped entry", () => { expect(skippedEntry).toEqual(allEntries[0][1]); }); }); }); - describe('Logical Operations', () => { - describe('OR Query Objects', () => { + describe("Logical Operations", () => { + describe("OR Query Objects", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1']); - const Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', 'false'); - const Query = Stack.ContentType(contentTypes.source).Query(); - - entry = await Query.or(Query1, Query2).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .containedIn("title", ["source1"]); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", "false"); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entry = await Query.or(Query1, Query2).toJSON().findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); - describe('AND Query Objects', () => { + describe("AND Query Objects", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1']); - const Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - const Query = Stack.ContentType(contentTypes.source).Query(); - - entry = await Query.and(Query1, Query2).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .containedIn("title", ["source1"]); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entry = await Query.and(Query1, Query2).toJSON().findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); - describe('Raw Query', () => { + describe("Raw Query", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .query({ "$or": [{ "title": "source1" }, { "boolean": "false" }] }) - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.query({ + $or: [{ title: "source1" }, { boolean: "false" }], + }) + .toJSON() + .findOne(); }); - test('Entry should satisfy OR condition', () => { - expect(entry.title === 'source1' || entry.boolean === false).toBeTruthy(); + test("Entry should satisfy OR condition", () => { + expect( + entry.title === "source1" || entry.boolean === false + ).toBeTruthy(); }); - - test('Should return an entry with uid, locale, publish_details', () => { + + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); }); - describe('Tags', () => { + describe("Tags", () => { let entry; let error = null; const tags = ["tag1", "tag2"]; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.tags(tags).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.tags(tags).toJSON().findOne(); }); - test('Tags specified should be found in the result', () => { + test("Tags specified should be found in the result", () => { expect(Utils.arrayPresentInArray(tags, entry.tags) > 0).toBe(true); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); - describe('Search', () => { + describe("Search", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.search('source1').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.search("source1").toJSON().findOne(); }); - test('Should return an entry with uid, locale, publish_details', () => { + test("Should return an entry with uid, locale, publish_details", () => { expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); }); }); - describe('Regex', () => { + describe("Regex", () => { let entry; let error = null; - const field = 'title'; + const field = "title"; const regex = { - pattern: '^source', - options: 'i' + pattern: "^source", + options: "i", }; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.regex(field, regex.pattern, regex.options).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.regex(field, regex.pattern, regex.options) + .toJSON() + .findOne(); }); - test('Entry field should match the regex pattern', () => { + test("Entry field should match the regex pattern", () => { const regExp = new RegExp(regex.pattern, regex.options); expect(regExp.test(entry[field])).toBe(true); }); - - test('Should return an entry with uid, locale, publish_details', () => { - expect(entry).toBeDefined(); - expect(entry['uid']).toBeDefined(); - expect(entry['locale']).toBeDefined(); - expect(entry['publish_details']).toBeDefined(); - }); + + test("Should return an entry with uid, locale, publish_details", () => { + expect(entry).toBeDefined(); + expect(entry["uid"]).toBeDefined(); + expect(entry["locale"]).toBeDefined(); + expect(entry["publish_details"]).toBeDefined(); + }); }); - describe('Localization', () => { - describe('Without Fallback', () => { + describe("Localization", () => { + describe("Without Fallback", () => { let entry; let error = null; - const _in = ['ja-jp']; + const _in = ["ja-jp"]; beforeAll(async () => { - try { - entry = await Stack.ContentType(contentTypes.source) - .Query() - .language('ja-jp') - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entry = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should have correct locale in publish_details', () => { + test("Entry should have correct locale in publish_details", () => { expect(_in).toContain(entry.publish_details.locale); }); }); - describe('With Fallback', () => { + describe("With Fallback", () => { let entry; let error = null; - const _in = ['ja-jp', 'en-us']; + const _in = ["ja-jp", "en-us"]; beforeAll(async () => { - try { - entry = await Stack.ContentType(contentTypes.source) - .Query() - .language('ja-jp') - .includeFallback() - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entry = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .includeFallback() + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should have locale from allowed fallback list', () => { + test("Entry should have locale from allowed fallback list", () => { expect(_in).toContain(entry.publish_details.locale); }); }); }); - describe('Including References', () => { - describe('includeReference - String', () => { + describe("Including References", () => { + describe("includeReference - String", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.includeReference('reference').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('All present references should be included as objects', () => { - expect(entry && entry['reference'] && typeof entry['reference'] === 'object').toBe(true); + test("All present references should be included as objects", () => { + expect( + entry && entry["reference"] && typeof entry["reference"] === "object" + ).toBe(true); }); }); - describe('includeReference - Array', () => { + describe("includeReference - Array", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.includeReference(['reference', 'other_reference']).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference(["reference", "other_reference"]) + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('All present references should be included as objects', () => { - const condition = ( - entry && - entry['reference'] && - typeof entry['reference'] === 'object' && - entry.other_reference && - typeof entry.other_reference === 'object' - ); + test("All present references should be included as objects", () => { + const condition = + entry && + entry["reference"] && + typeof entry["reference"] === "object" && + entry.other_reference && + typeof entry.other_reference === "object"; expect(condition).toBe(true); }); }); }); - describe('Including Schema', () => { + describe("Including Schema", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.includeSchema().toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeSchema().toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); }); - describe('Including ContentType', () => { + describe("Including ContentType", () => { let entry; let contentType; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - [entry, contentType] = await new Promise((resolve, reject) => { - Query.includeContentType() - .toJSON() - .findOne() - .then((entry, contentType) => resolve([entry, contentType]), reject); - }); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + [entry, contentType] = await new Promise((resolve, reject) => { + Query.includeContentType() + .toJSON() + .findOne() + .then((entry, contentType) => resolve([entry, contentType]), reject); + }); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('ContentType should not be present', () => { + test("ContentType should not be present", () => { expect(typeof contentType).toBe("undefined"); }); }); - describe('Including Schema and ContentType', () => { + describe("Including Schema and ContentType", () => { let entry; let contentType; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - [entry, contentType] = await new Promise((resolve, reject) => { - Query.includeSchema() - .includeContentType() - .toJSON() - .findOne() - .then((entry, contentType) => resolve([entry, contentType]), reject); - }); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + [entry, contentType] = await new Promise((resolve, reject) => { + Query.includeSchema() + .includeContentType() + .toJSON() + .findOne() + .then((entry, contentType) => resolve([entry, contentType]), reject); + }); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('ContentType should not be present', () => { + test("ContentType should not be present", () => { expect(typeof contentType).toBe("undefined"); }); }); - describe('Field Selection - Only', () => { - describe('only - Single String Parameter', () => { + describe("Field Selection - Only", () => { + describe("only - Single String Parameter", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.only('title').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only("title").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should only contain title and uid fields', () => { + test("Entry should only contain title and uid fields", () => { expect(Object.keys(entry).length).toBe(2); - expect(entry).toHaveProperty('title'); - expect(entry).toHaveProperty('uid'); + expect(entry).toHaveProperty("title"); + expect(entry).toHaveProperty("uid"); }); }); - describe('only - Multiple String Parameters', () => { + describe("only - Multiple String Parameters", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.only('BASE', 'title').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only("BASE", "title").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should only contain title and uid fields', () => { + test("Entry should only contain title and uid fields", () => { expect(Object.keys(entry).length).toBe(2); - expect(entry).toHaveProperty('title'); - expect(entry).toHaveProperty('uid'); + expect(entry).toHaveProperty("title"); + expect(entry).toHaveProperty("uid"); }); }); - describe('only - Array Parameter', () => { + describe("only - Array Parameter", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.only(['title', 'url']).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only(["title", "url"]).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should contain title, url, and uid fields', () => { + test("Entry should contain title, url, and uid fields", () => { expect(Object.keys(entry).length).toBe(3); - expect(entry).toHaveProperty('title'); - expect(entry).toHaveProperty('url'); - expect(entry).toHaveProperty('uid'); + expect(entry).toHaveProperty("title"); + expect(entry).toHaveProperty("url"); + expect(entry).toHaveProperty("uid"); }); }); - describe('only - For reference - String', () => { + describe("only - For reference - String", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .includeReference('reference') - .only('BASE', 'reference') - .only('reference', 'title') - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference") + .only("BASE", "reference") + .only("reference", "title") + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Reference fields should be properly filtered', () => { + test("Reference fields should be properly filtered", () => { let hasProperReferences = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - hasProperReferences = entry['reference'].every(ref => - ref && "title" in ref && "uid" in ref); + if ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ) { + hasProperReferences = entry["reference"].every( + (ref) => ref && "title" in ref && "uid" in ref + ); } else { hasProperReferences = true; // No references or empty references is valid } @@ -872,38 +760,33 @@ describe('FindOne Tests', () => { }); }); - describe('only - For reference - Array', () => { + describe("only - For reference - Array", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .includeReference('reference') - .only('BASE', ['reference']) - .only('reference', ['title']) - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .only("reference", ["title"]) + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('References should have only specified fields', () => { + test("References should have only specified fields", () => { let hasProperReferences = false; - if (entry && entry['reference']) { - if (Array.isArray(entry['reference'])) { - if (entry['reference'].length === 0) { + if (entry && entry["reference"]) { + if (Array.isArray(entry["reference"])) { + if (entry["reference"].length === 0) { hasProperReferences = true; } else { - hasProperReferences = entry['reference'].every(ref => - ref && "title" in ref && "uid" in ref); + hasProperReferences = entry["reference"].every( + (ref) => ref && "title" in ref && "uid" in ref + ); } } else { hasProperReferences = true; @@ -916,108 +799,92 @@ describe('FindOne Tests', () => { }); }); - describe('Field Selection - Except', () => { - describe('except - Single String Parameter', () => { + describe("Field Selection - Except", () => { + describe("except - Single String Parameter", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.except('title').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except("title").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should not contain the excluded field', () => { - expect(entry).not.toHaveProperty('title'); + test("Entry should not contain the excluded field", () => { + expect(entry).not.toHaveProperty("title"); }); }); - describe('except - Multiple String Parameters', () => { + describe("except - Multiple String Parameters", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.except('BASE', 'title').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except("BASE", "title").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should not contain the excluded field', () => { - expect(entry).not.toHaveProperty('title'); + test("Entry should not contain the excluded field", () => { + expect(entry).not.toHaveProperty("title"); }); }); - describe('except - Array of String Parameters', () => { + describe("except - Array of String Parameters", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.except(['title', 'url']).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except(["title", "url"]).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should not contain the first excluded field', () => { - expect(entry).not.toHaveProperty('title'); + test("Entry should not contain the first excluded field", () => { + expect(entry).not.toHaveProperty("title"); }); - test('Entry should not contain the second excluded field', () => { - expect(entry).not.toHaveProperty('url'); + test("Entry should not contain the second excluded field", () => { + expect(entry).not.toHaveProperty("url"); }); }); - describe('except - For the reference - String', () => { + describe("except - For the reference - String", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .includeReference('reference') - .only('BASE', 'reference') - .except('reference', 'title') - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference") + .only("BASE", "reference") + .except("reference", "title") + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('References should not contain the excluded field', () => { + test("References should not contain the excluded field", () => { let hasProperExclusions = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - hasProperExclusions = entry['reference'].every(ref => - ref && !("title" in ref)); + if ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ) { + hasProperExclusions = entry["reference"].every( + (ref) => ref && !("title" in ref) + ); } else { // No references is valid for this test hasProperExclusions = true; @@ -1025,35 +892,34 @@ describe('FindOne Tests', () => { expect(hasProperExclusions).toBe(true); }); }); - - describe('except - For the reference - Array', () => { + + describe("except - For the reference - Array", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .includeReference('reference') - .only('BASE', ['reference']) - .except('reference', ['title']) - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .except("reference", ["title"]) + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('References should not contain the excluded field', () => { + test("References should not contain the excluded field", () => { let hasProperExclusions = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - hasProperExclusions = entry['reference'].every(ref => - ref && !("title" in ref)); + if ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ) { + hasProperExclusions = entry["reference"].every( + (ref) => ref && !("title" in ref) + ); } else { hasProperExclusions = true; } @@ -1061,4 +927,4 @@ describe('FindOne Tests', () => { }); }); }); -}); \ No newline at end of file +}); diff --git a/test/entry/findone.js b/test/entry/findone.js index 53f649e3..e63d74be 100755 --- a/test/entry/findone.js +++ b/test/entry/findone.js @@ -1,248 +1,218 @@ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const Contentstack = require('../../dist/node/contentstack.js'); -const Utils = require('./utils.js'); -const init = require('../config.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const Utils = require("./utils.js"); +const init = require("../config.js"); const contentTypes = init.contentTypes; let Stack; -describe('FindOne Tests', () => { +describe("FindOne Tests", () => { // Setup - Initialize the Contentstack Stack Instance beforeAll((done) => { Stack = Contentstack.Stack(init.stack); Stack.setHost(init.host); setTimeout(done, 1000); }); - - describe('Default FindOne', () => { + + describe("Default FindOne", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); - describe('Sorting', () => { - describe('Ascending', () => { + describe("Sorting", () => { + describe("Ascending", () => { let entry; let error = null; - const field = 'created_at'; + const field = "created_at"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.ascending(field).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.ascending(field).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); - describe('Descending', () => { + describe("Descending", () => { let entry; let error = null; - const field = 'created_at'; + const field = "created_at"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.descending(field).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.descending(field).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); }); - describe('Comparison', () => { - describe('lessThan', () => { + describe("Comparison", () => { + describe("lessThan", () => { let entry; let error = null; const value = 11; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); - entry = await Query.lessThan('num_field', value).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entry = await Query.lessThan("num_field", value).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('num_field should be less than specified value', () => { + test("num_field should be less than specified value", () => { expect(entry.num_field).toBeLessThan(value); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); - describe('lessThanOrEqualTo', () => { + describe("lessThanOrEqualTo", () => { let entry; let error = null; const value = 11; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.numbers_content_type).Query(); - entry = await Query.lessThanOrEqualTo('num_field', value).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType( + contentTypes.numbers_content_type + ).Query(); + entry = await Query.lessThanOrEqualTo("num_field", value) + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('num_field should be less than or equal to specified value', () => { + test("num_field should be less than or equal to specified value", () => { expect(entry.num_field).toBeLessThanOrEqual(value); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); - }); - describe('Array/Subset', () => { - describe('containedIn', () => { + describe("Array/Subset", () => { + describe("containedIn", () => { let entry; let error = null; const _in = ["source1", "source2"]; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.containedIn('title', _in).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.containedIn("title", _in).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry title should be in the specified values', () => { + test("Entry title should be in the specified values", () => { expect(_in).toContain(entry.title); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); - describe('notContainedIn', () => { + describe("notContainedIn", () => { let entry; let error = null; const _in = ["source1", "source2", "source3", "source4"]; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.notContainedIn('title', _in).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.notContainedIn("title", _in).toJSON().findOne(); }); - test('Should either return an entry or an expected error', () => { + test("Should either return an entry or an expected error", () => { if (entry) { expect(entry).toBeDefined(); expect(_in).not.toContain(entry.title); @@ -250,527 +220,460 @@ describe('FindOne Tests', () => { expect(entry.locale).toBeDefined(); expect(entry.publish_details).toBeDefined(); } else { - expect(error).toEqual({ - error_code: 141, - error_message: 'The requested entry doesn\'t exist.' + expect(error).toEqual({ + error_code: 141, + error_message: "The requested entry doesn't exist.", }); } }); }); }); - describe('Element Existence', () => { - describe('exists', () => { + describe("Element Existence", () => { + describe("exists", () => { let entry; let error = null; const queryField = "boolean"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.exists(queryField).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.exists(queryField).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should have the queried field', () => { - expect(typeof entry[queryField]).not.toBe('undefined'); + test("Entry should have the queried field", () => { + expect(typeof entry[queryField]).not.toBe("undefined"); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); - describe('notExists', () => { + describe("notExists", () => { let entry; let error = null; const queryField = "isspecial"; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.notExists(queryField).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.notExists(queryField).toJSON().findOne(); }); - test('Should either have entry without field or proper error', () => { + test("Should either have entry without field or proper error", () => { if (entry) { - expect(typeof entry[queryField]).toBe('undefined'); + expect(typeof entry[queryField]).toBe("undefined"); expect(entry.uid).toBeDefined(); expect(entry.locale).toBeDefined(); expect(entry.publish_details).toBeDefined(); } else { - expect(error).toEqual({ - error_code: 141, - error_message: 'The requested entry doesn\'t exist.' + expect(error).toEqual({ + error_code: 141, + error_message: "The requested entry doesn't exist.", }); } }); }); }); - describe('Pagination', () => { - describe('skip', () => { + describe("Pagination", () => { + describe("skip", () => { let allEntries; let skippedEntry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - allEntries = await Query.toJSON().find(); - - const SkipQuery = Stack.ContentType(contentTypes.source).Query(); - skippedEntry = await SkipQuery.skip(1).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + allEntries = await Query.toJSON().find(); + + const SkipQuery = Stack.ContentType(contentTypes.source).Query(); + skippedEntry = await SkipQuery.skip(1).toJSON().findOne(); }); - test('Should have entries in the result set', () => { + test("Should have entries in the result set", () => { expect(allEntries.length).toBeTruthy(); }); - test('Should get correct skipped entry', () => { + test("Should get correct skipped entry", () => { expect(skippedEntry).toEqual(allEntries[0][1]); }); }); }); - describe('Logical Operations', () => { - describe('OR Query Objects', () => { + describe("Logical Operations", () => { + describe("OR Query Objects", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query1 = Stack.ContentType(contentTypes.source).Query().containedIn('title', ['source1', 'source2']); - const Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - const Query = Stack.ContentType(contentTypes.source).Query(); - - entry = await Query.or(Query1, Query2).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .containedIn("title", ["source1", "source2"]); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entry = await Query.or(Query1, Query2).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should satisfy the OR condition', () => { - const condition = (entry.title === 'source1' || - entry.title === 'source2' || - entry.boolean === true); + test("Entry should satisfy the OR condition", () => { + const condition = + entry.title === "source1" || + entry.title === "source2" || + entry.boolean === true; expect(condition).toBeTruthy(); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); - describe('AND Query Objects', () => { + describe("AND Query Objects", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query1 = Stack.ContentType(contentTypes.source).Query().where('title', 'source1'); - const Query2 = Stack.ContentType(contentTypes.source).Query().where('boolean', true); - const Query = Stack.ContentType(contentTypes.source).Query(); - - entry = await Query.and(Query1, Query2).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query1 = Stack.ContentType(contentTypes.source) + .Query() + .where("title", "source1"); + const Query2 = Stack.ContentType(contentTypes.source) + .Query() + .where("boolean", true); + const Query = Stack.ContentType(contentTypes.source).Query(); + + entry = await Query.and(Query1, Query2).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should satisfy the AND condition', () => { - const condition = (entry.title === 'source1' && entry.boolean === true); + test("Entry should satisfy the AND condition", () => { + const condition = entry.title === "source1" && entry.boolean === true; expect(condition).toBeTruthy(); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); - describe('Raw Query', () => { + describe("Raw Query", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .query({ "$or": [{ "title": "source1" }, { "boolean": "false" }] }) - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.query({ + $or: [{ title: "source1" }, { boolean: "false" }], + }) + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should satisfy the OR condition in raw query', () => { - const condition = (entry.title === 'source1' || entry.boolean === false); + test("Entry should satisfy the OR condition in raw query", () => { + const condition = entry.title === "source1" || entry.boolean === false; expect(condition).toBeTruthy(); }); - test('Entry should have uid', () => { + test("Entry should have uid", () => { expect(entry.uid).toBeDefined(); }); - test('Entry should have locale', () => { + test("Entry should have locale", () => { expect(entry.locale).toBeDefined(); }); - test('Entry should have publish_details', () => { + test("Entry should have publish_details", () => { expect(entry.publish_details).toBeDefined(); }); }); }); - describe('Localization', () => { - describe('Without Fallback', () => { + describe("Localization", () => { + describe("Without Fallback", () => { let entry; let error = null; - const _in = ['ja-jp']; + const _in = ["ja-jp"]; beforeAll(async () => { - try { - entry = await Stack.ContentType(contentTypes.source) - .Query() - .language('ja-jp') - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entry = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should have correct locale in publish_details', () => { + test("Entry should have correct locale in publish_details", () => { expect(_in).toContain(entry.publish_details.locale); }); }); - describe('With Fallback', () => { + describe("With Fallback", () => { let entry; let error = null; - const _in = ['ja-jp', 'en-us']; + const _in = ["ja-jp", "en-us"]; beforeAll(async () => { - try { - entry = await Stack.ContentType(contentTypes.source) - .Query() - .language('ja-jp') - .includeFallback() - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + entry = await Stack.ContentType(contentTypes.source) + .Query() + .language("ja-jp") + .includeFallback() + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should have locale from allowed fallback list', () => { + test("Entry should have locale from allowed fallback list", () => { expect(_in).toContain(entry.publish_details.locale); }); }); }); - describe('Including References', () => { - describe('includeReference - String', () => { + describe("Including References", () => { + describe("includeReference - String", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.includeReference('reference').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('All present references should be included as objects', () => { - expect(entry && entry.reference && typeof entry.reference === 'object').toBe(true); + test("All present references should be included as objects", () => { + expect( + entry && entry.reference && typeof entry.reference === "object" + ).toBe(true); }); }); - describe('includeReference - Array', () => { + describe("includeReference - Array", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.includeReference(['reference', 'other_reference']).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference(["reference", "other_reference"]) + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('All present references should be included as objects', () => { - const condition = ( - entry && - entry.reference && - typeof entry.reference === 'object' && - entry.other_reference && - typeof entry.other_reference === 'object' - ); + test("All present references should be included as objects", () => { + const condition = + entry && + entry.reference && + typeof entry.reference === "object" && + entry.other_reference && + typeof entry.other_reference === "object"; expect(condition).toBe(true); }); }); }); - describe('Including Schema', () => { + describe("Including Schema", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.includeSchema().toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeSchema().toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); }); - describe('Including ContentType', () => { + describe("Including ContentType", () => { let entry; let contentType; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - [entry, contentType] = await new Promise((resolve, reject) => { - Query.includeContentType() - .toJSON() - .findOne() - .then((entry, contentType) => resolve([entry, contentType]), reject); - }); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + [entry, contentType] = await new Promise((resolve, reject) => { + Query.includeContentType() + .toJSON() + .findOne() + .then((entry, contentType) => resolve([entry, contentType]), reject); + }); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('ContentType should not be present', () => { + test("ContentType should not be present", () => { expect(typeof contentType).toBe("undefined"); }); }); - describe('Including Schema and ContentType', () => { + describe("Including Schema and ContentType", () => { let entry; let contentType; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - [entry, contentType] = await new Promise((resolve, reject) => { - Query.includeSchema() - .includeContentType() - .toJSON() - .findOne() - .then((entry, contentType) => resolve([entry, contentType]), reject); - }); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + [entry, contentType] = await new Promise((resolve, reject) => { + Query.includeSchema() + .includeContentType() + .toJSON() + .findOne() + .then((entry, contentType) => resolve([entry, contentType]), reject); + }); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('ContentType should not be present', () => { + test("ContentType should not be present", () => { expect(typeof contentType).toBe("undefined"); }); }); - describe('Field Selection - Only', () => { - describe('only - Single String Parameter', () => { + describe("Field Selection - Only", () => { + describe("only - Single String Parameter", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.only('title').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only("title").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should only contain title and uid fields', () => { + test("Entry should only contain title and uid fields", () => { expect(Object.keys(entry).length).toBe(2); - expect(entry).toHaveProperty('title'); - expect(entry).toHaveProperty('uid'); + expect(entry).toHaveProperty("title"); + expect(entry).toHaveProperty("uid"); }); }); - describe('only - Multiple String Parameters', () => { + describe("only - Multiple String Parameters", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.only('BASE', 'title').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only("BASE", "title").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should only contain title and uid fields', () => { + test("Entry should only contain title and uid fields", () => { expect(Object.keys(entry).length).toBe(2); - expect(entry).toHaveProperty('title'); - expect(entry).toHaveProperty('uid'); + expect(entry).toHaveProperty("title"); + expect(entry).toHaveProperty("uid"); }); }); - describe('only - Array Parameter', () => { + describe("only - Array Parameter", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.only(['title', 'url']).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.only(["title", "url"]).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should contain title, url, and uid fields', () => { + test("Entry should contain title, url, and uid fields", () => { expect(Object.keys(entry).length).toBe(3); - expect(entry).toHaveProperty('title'); - expect(entry).toHaveProperty('url'); - expect(entry).toHaveProperty('uid'); + expect(entry).toHaveProperty("title"); + expect(entry).toHaveProperty("url"); + expect(entry).toHaveProperty("uid"); }); }); - describe('only - For reference - String', () => { + describe("only - For reference - String", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .includeReference('reference') - .only('BASE', 'reference') - .only('reference', 'title') - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference") + .only("BASE", "reference") + .only("reference", "title") + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('References should have only specified fields', () => { + test("References should have only specified fields", () => { let flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry.reference.every(reference => - reference && "title" in reference && "uid" in reference); + if ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ) { + flag = entry.reference.every( + (reference) => + reference && "title" in reference && "uid" in reference + ); } else { flag = true; } @@ -778,38 +681,34 @@ describe('FindOne Tests', () => { }); }); - describe('only - For reference - Array', () => { + describe("only - For reference - Array", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .includeReference('reference') - .only('BASE', ['reference']) - .only('reference', ['title']) - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .only("reference", ["title"]) + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('References should have only specified fields', () => { + test("References should have only specified fields", () => { let flag = false; - if (entry && entry['reference']) { - if (entry['reference'].length) { - if (entry['reference'].length === 0) { + if (entry && entry["reference"]) { + if (entry["reference"].length) { + if (entry["reference"].length === 0) { flag = true; } else { - flag = entry.reference.every(reference => - reference && "title" in reference && "uid" in reference); + flag = entry.reference.every( + (reference) => + reference && "title" in reference && "uid" in reference + ); } } else { flag = true; @@ -822,141 +721,124 @@ describe('FindOne Tests', () => { }); }); - describe('Field Selection - Except', () => { - describe('except - Single String Parameter', () => { + describe("Field Selection - Except", () => { + describe("except - Single String Parameter", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.except('title').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except("title").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should not contain the title field', () => { - expect(entry).not.toHaveProperty('title'); + test("Entry should not contain the title field", () => { + expect(entry).not.toHaveProperty("title"); }); }); - describe('except - Multiple String Parameters', () => { + describe("except - Multiple String Parameters", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.except('BASE', 'title').toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except("BASE", "title").toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should not contain the title field', () => { - expect(entry).not.toHaveProperty('title'); + test("Entry should not contain the title field", () => { + expect(entry).not.toHaveProperty("title"); }); }); - describe('except - Array Parameter', () => { + describe("except - Array Parameter", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query.except(['title', 'file']).toJSON().findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.except(["title", "file"]).toJSON().findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('Entry should not contain the title field', () => { - expect(entry).not.toHaveProperty('title'); + test("Entry should not contain the title field", () => { + expect(entry).not.toHaveProperty("title"); }); - test('Entry should not contain the file field', () => { - expect(entry).not.toHaveProperty('file'); + test("Entry should not contain the file field", () => { + expect(entry).not.toHaveProperty("file"); }); }); - describe('except - For reference - String', () => { + describe("except - For reference - String", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .includeReference('reference') - .only('BASE', 'reference') - .except('reference', 'title') - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference") + .only("BASE", "reference") + .except("reference", "title") + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('References should not contain the specified field', () => { + test("References should not contain the specified field", () => { let flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry.reference.every(reference => - reference && !("title" in reference)); + if ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ) { + flag = entry.reference.every( + (reference) => reference && !("title" in reference) + ); } expect(flag).toBeTruthy(); }); }); - describe('except - For reference - Array', () => { + describe("except - For reference - Array", () => { let entry; let error = null; beforeAll(async () => { - try { - const Query = Stack.ContentType(contentTypes.source).Query(); - entry = await Query - .includeReference('reference') - .only('BASE', ['reference']) - .except('reference', ['title']) - .toJSON() - .findOne(); - } catch (err) { - error = err; - console.error("Error:", err); - } + const Query = Stack.ContentType(contentTypes.source).Query(); + entry = await Query.includeReference("reference") + .only("BASE", ["reference"]) + .except("reference", ["title"]) + .toJSON() + .findOne(); }); - test('Should return an entry', () => { + test("Should return an entry", () => { expect(entry).toBeDefined(); }); - test('References should not contain the specified field', () => { + test("References should not contain the specified field", () => { let flag = false; - if (entry && entry['reference'] && typeof entry['reference'] === 'object') { - flag = entry.reference.every(reference => - reference && !("title" in reference)); + if ( + entry && + entry["reference"] && + typeof entry["reference"] === "object" + ) { + flag = entry.reference.every( + (reference) => reference && !("title" in reference) + ); } expect(flag).toBeTruthy(); }); @@ -978,26 +860,26 @@ describe('FindOne Tests', () => { } }); - test('Should not succeed', () => { + test("Should not succeed", () => { expect(success).toBe(false); }); - test('Should return HTTP status 422', () => { + test("Should return HTTP status 422", () => { expect(error.http_code).toBe(422); }); - test('Should have appropriate error message', () => { + test("Should have appropriate error message", () => { expect(error.http_message).toBeTruthy(); }); }); - describe('412 Unauthorized Error', () => { + describe("412 Unauthorized Error", () => { let success = false; let error = null; beforeAll(async () => { try { - Stack.headers = { authorization: 'InvalidAPIKey' }; // Simulating an invalid API key + Stack.headers = { authorization: "InvalidAPIKey" }; // Simulating an invalid API key const Query = Stack.ContentType(contentTypes.source).Query(); await Query.toJSON().findOne(); success = true; @@ -1009,17 +891,17 @@ describe('FindOne Tests', () => { } }); - test('Should not succeed', () => { + test("Should not succeed", () => { expect(success).toBe(false); }); - test('Should return HTTP status 412', () => { + test("Should return HTTP status 412", () => { expect(error.http_code).toBe(412); }); - test('Should have appropriate error message', () => { + test("Should have appropriate error message", () => { expect(error.http_message).toBeTruthy(); }); }); }); -}); \ No newline at end of file +}); From abff767456d4de12d3c9631787d06803181fc419 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Mon, 24 Mar 2025 21:22:56 +0530 Subject: [PATCH 51/76] fix: update Slack channel in sendSlackMessage function --- sanity-report-dev11.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index d43a9138..9b84ce4e 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -72,7 +72,7 @@ const sendSlackMessage = async () => { try { const result = await app.client.chat.postMessage({ token: process.env.SLACK_BOT_TOKEN, - channel: process.env.SLACK_CHANNEL, + channel: process.env.SLACK_CHANNEL2, text: slackMessage.text, // Ensure this is the full object }); From b116bd60eb441a60954e0928ed995825ef50000c Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 26 Mar 2025 12:05:02 +0530 Subject: [PATCH 52/76] update dependencies --- package-lock.json | 44 +++++++++++++------------------------------- package.json | 6 +++--- 2 files changed, 16 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index e867920c..43626622 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "3.25.0", "license": "MIT", "dependencies": { - "@contentstack/utils": "^1.3.15", - "@fetch-mock/jest": "^0.2.10", + "@contentstack/utils": "^1.3.18", + "@fetch-mock/jest": "^0.2.12", "es6-promise": "^4.2.8", - "fetch-mock": "^12.2.0", + "fetch-mock": "^12.4.0", "localStorage": "1.0.4", "qs": "^6.14.0" }, @@ -1783,9 +1783,9 @@ "license": "MIT" }, "node_modules/@contentstack/utils": { - "version": "1.3.16", - "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.16.tgz", - "integrity": "sha512-HfVEwh7Da8xV4iZth/ci5bcOqszTx/U2mOzsWbyjHLeOfiU9U7uj6DefrrAPhNhL7JgCq/EpRd3vFtaxiEHBlA==", + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.20.tgz", + "integrity": "sha512-WXkFv5uKrAMs21NPCWe3+7KHYfagenS8rv1/yCDsZ+uV1FvKkzst+MiU1+hcaWHi0E6QaPpYDcxpiltUHo5TSA==", "license": "MIT" }, "node_modules/@csstools/color-helpers": { @@ -1914,12 +1914,12 @@ } }, "node_modules/@fetch-mock/jest": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@fetch-mock/jest/-/jest-0.2.10.tgz", - "integrity": "sha512-nBZUUrYhuCzzmCx0jmGTZOfENf7IhmyYG89WMquHlCkqYSXBJT5PldFg+P107QZcShQPUmqxyLzGHdmsL7mmJw==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/@fetch-mock/jest/-/jest-0.2.15.tgz", + "integrity": "sha512-cudDyqZr/mzA/AsXzowx3Il5C7//lOaBn3CW/+gzitGRk621ZPSdlZYbaq3kwxji5vwUaaFQE0saKBLHi2K6fQ==", "license": "MIT", "dependencies": { - "fetch-mock": "^12.3.0" + "fetch-mock": "^12.5.2" }, "engines": { "node": ">=18.11.0" @@ -5199,15 +5199,14 @@ } }, "node_modules/fetch-mock": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.3.0.tgz", - "integrity": "sha512-+ZHzLuzrKpP3u5PZo8ghFP1Kr3UJUTZ5PT/uQZtLv7UagDCVRt1bSzVg6MoTFdjQ0GXsx/crq2t0tGabkbH2yA==", + "version": "12.5.2", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.5.2.tgz", + "integrity": "sha512-b5KGDFmdmado2MPQjZl6ix3dAG3iwCitb0XQwN72y2s9VnWZ3ObaGNy+bkpm1390foiLDybdJ7yjRGKD36kATw==", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", "dequal": "^2.0.3", "glob-to-regexp": "^0.4.1", - "is-subset-of": "^3.1.10", "regexparam": "^3.0.0" }, "engines": { @@ -6410,16 +6409,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-subset-of": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/is-subset-of/-/is-subset-of-3.1.10.tgz", - "integrity": "sha512-avvaYgVmYWyaZ1NDFiv4y9JGkrE2je3op1Po4VYKKJKR8H2qVPsg1GZuuXl5elCTxTlwAIsrAjWAs4BVrISFRw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "MIT", - "dependencies": { - "typedescriptor": "3.0.2" - } - }, "node_modules/is-symbol": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", @@ -11014,13 +11003,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedescriptor": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/typedescriptor/-/typedescriptor-3.0.2.tgz", - "integrity": "sha512-hyVbaCUd18UiXk656g/imaBLMogpdijIEpnhWYrSda9rhvO4gOU16n2nh7xG5lv/rjumnZzGOdz0CEGTmFe0fQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "MIT" - }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", diff --git a/package.json b/package.json index ca89d221..e0333705 100644 --- a/package.json +++ b/package.json @@ -100,10 +100,10 @@ "webpack-node-externals": "^3.0.0" }, "dependencies": { - "@contentstack/utils": "^1.3.15", - "@fetch-mock/jest": "^0.2.10", + "@contentstack/utils": "^1.3.18", + "@fetch-mock/jest": "^0.2.12", "es6-promise": "^4.2.8", - "fetch-mock": "^12.2.0", + "fetch-mock": "^12.4.0", "localStorage": "1.0.4", "qs": "^6.14.0" } From b7e3bc9d5b2d8abdcc37bb0f4fccade7024cce1b Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 27 Mar 2025 10:43:41 +0530 Subject: [PATCH 53/76] fix: update Slack channel to SLACK_CHANNEL2 in sendFailureDetails function --- sanity-report-dev11.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index 9b84ce4e..6c4ba11e 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -102,7 +102,7 @@ const sendFailureDetails = async (threadTs) => { try { await app.client.chat.postMessage({ token: process.env.SLACK_BOT_TOKEN, - channel: process.env.SLACK_CHANNEL, + channel: process.env.SLACK_CHANNEL2, text: failureDetails, thread_ts: threadTs, }); From 82693e98beb098c5df2ec494c2e80463569bdc59 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 1 Apr 2025 14:30:52 +0530 Subject: [PATCH 54/76] bump version to 3.25.1 --- CHANGELOG.md | 6 ++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11beff0f..a82d91e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ## Change log +### Version: 3.25.1 +#### Date: April-01-2025 +##### Fix: + - Update dependencies + - Update slack notification + ### Version: 3.25.0 #### Date: March-10-2025 ##### Fix: diff --git a/package-lock.json b/package-lock.json index c0de69ab..b8e5ee33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.25.0", + "version": "3.25.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.25.0", + "version": "3.25.1", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.15", diff --git a/package.json b/package.json index c5d28589..98fad20d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.25.0", + "version": "3.25.1", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { From 7f091c9873333b8e354bf98b6c998feffc0eaaeb Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Wed, 2 Apr 2025 14:04:00 +0530 Subject: [PATCH 55/76] allow number, string, object, boolean, and RegExp as valid query parameters in sync method --- CHANGELOG.md | 5 +++++ package-lock.json | 4 ++-- package.json | 2 +- src/core/stack.js | 11 +++++++++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a82d91e6..2c11ea9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## Change log +### Version: 3.25.2 +#### Date: April-02-2025 +##### Fix: + - allow number, string, object, boolean, and RegExp as valid query parameters in sync method + ### Version: 3.25.1 #### Date: April-01-2025 ##### Fix: diff --git a/package-lock.json b/package-lock.json index 0b706898..c5e90ab8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.25.1", + "version": "3.25.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.25.1", + "version": "3.25.2", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.18", diff --git a/package.json b/package.json index c6bf4a51..a3427ed2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.25.1", + "version": "3.25.2", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { diff --git a/src/core/stack.js b/src/core/stack.js index 2b9ed88b..b9206fd3 100755 --- a/src/core/stack.js +++ b/src/core/stack.js @@ -603,9 +603,16 @@ export default class Stack { if (params) { for (const key in params) { + const value = params[key]; if (params.hasOwnProperty(key)) { - if (typeof params[key] !== "string" && typeof params[key] !== "number") { - throw new Error(`Invalid parameter value for key "${key}": must be a string or number.`); + if ( + typeof value !== "string" && + typeof value !== "number" && + typeof value !== "boolean" && + !(value instanceof RegExp) && + (typeof value !== "object" || value === null) + ) { + throw new Error(`Invalid parameter value for key "${key}": must be a string, number, object, boolean, or RegExp.`); } this._query[key] = params[key]; } From cbc7c0a31833ed25b3cf338a056595b3d4404516 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Wed, 2 Apr 2025 14:53:30 +0530 Subject: [PATCH 56/76] Added testcases --- test/typescript/sync.test.ts | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 test/typescript/sync.test.ts diff --git a/test/typescript/sync.test.ts b/test/typescript/sync.test.ts new file mode 100644 index 00000000..e6614573 --- /dev/null +++ b/test/typescript/sync.test.ts @@ -0,0 +1,37 @@ +import * as Contentstack from '../..'; + +const stack = Contentstack.Stack({ api_key: 'api_key', delivery_token: 'delivery_token', environment: 'environment', fetchOptions: { + logHandler: () => { + + } +}}); + +describe('Sync Test', () => { + test('Sync init test', done => { + const response = makeSync({"init": true}) + expect(response).not.toEqual(undefined) + done(); + }); + + test('Sync with startdate test', done => { + const response = makeSync({"init": true, "start_from": "2025-04-02"}) + expect(response).not.toEqual(undefined) + done(); + }); + + test('Sync with locale test', done => { + const response = makeSync({"init": true, "locale": "en-us"}) + expect(response).not.toEqual(undefined) + done(); + }); + + test('Sync with contentTypeUid test', done => { + const response = makeSync({"init": true, "content_type_uid": "ct_uid"}) + expect(response).not.toEqual(undefined) + done(); + }); +}); + +function makeSync(params: any) { + return stack.sync(params) +} \ No newline at end of file From a39646023b901fa5e79215543adab04485b849c5 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 2 Apr 2025 15:34:28 +0530 Subject: [PATCH 57/76] update package-lock --- package-lock.json | 1671 ++++++++++++++++++++------------------------- 1 file changed, 738 insertions(+), 933 deletions(-) diff --git a/package-lock.json b/package-lock.json index c5e90ab8..b9fd17b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,14 +69,14 @@ } }, "node_modules/@asamuzakjp/css-color": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz", - "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", + "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", "dev": true, "license": "MIT", "dependencies": { - "@csstools/css-calc": "^2.1.1", - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-calc": "^2.1.2", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "lru-cache": "^10.4.3" @@ -104,30 +104,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", - "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", - "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.5", + "@babel/generator": "^7.26.10", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.7", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.26.7", - "@babel/types": "^7.26.7", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -143,13 +143,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", - "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.5", - "@babel/types": "^7.26.5", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -172,12 +172,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", + "@babel/compat-data": "^7.26.8", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -188,18 +188,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", + "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/traverse": "^7.27.0", "semver": "^6.3.1" }, "engines": { @@ -210,9 +210,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", - "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz", + "integrity": "sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==", "dev": true, "license": "MIT", "dependencies": { @@ -228,9 +228,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", - "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", "dev": true, "license": "MIT", "dependencies": { @@ -403,25 +403,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", - "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.7" + "@babel/types": "^7.27.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -799,15 +799,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.8" }, "engines": { "node": ">=6.9.0" @@ -851,13 +851,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz", + "integrity": "sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1053,13 +1053,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { @@ -1422,13 +1422,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz", + "integrity": "sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1521,13 +1521,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1537,9 +1537,9 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", - "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", + "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==", "dev": true, "license": "MIT", "dependencies": { @@ -1620,13 +1620,13 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", - "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", + "@babel/compat-data": "^7.26.8", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", @@ -1640,7 +1640,7 @@ "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", "@babel/plugin-transform-async-to-generator": "^7.25.9", "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", @@ -1655,7 +1655,7 @@ "@babel/plugin-transform-dynamic-import": "^7.25.9", "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", "@babel/plugin-transform-function-name": "^7.25.9", "@babel/plugin-transform-json-strings": "^7.25.9", "@babel/plugin-transform-literals": "^7.25.9", @@ -1683,7 +1683,7 @@ "@babel/plugin-transform-shorthand-properties": "^7.25.9", "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", @@ -1691,9 +1691,9 @@ "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "engines": { @@ -1719,9 +1719,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", - "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "dev": true, "license": "MIT", "dependencies": { @@ -1732,30 +1732,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", - "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.7", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1764,9 +1764,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", - "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -1789,9 +1789,9 @@ "license": "MIT" }, "node_modules/@csstools/color-helpers": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", - "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", "dev": true, "funding": [ { @@ -1809,9 +1809,9 @@ } }, "node_modules/@csstools/css-calc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", - "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", + "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", "dev": true, "funding": [ { @@ -1833,9 +1833,9 @@ } }, "node_modules/@csstools/css-color-parser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", - "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", + "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", "dev": true, "funding": [ { @@ -1849,8 +1849,8 @@ ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^5.0.1", - "@csstools/css-calc": "^2.1.1" + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" }, "engines": { "node": ">=18" @@ -2350,13 +2350,13 @@ } }, "node_modules/@ljharb/through": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", - "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "version": "2.3.14", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.14.tgz", + "integrity": "sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bind": "^1.0.8" }, "engines": { "node": ">= 0.4" @@ -2394,9 +2394,9 @@ } }, "node_modules/@slack/bolt": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-4.2.0.tgz", - "integrity": "sha512-KQGUkC37t6DUR+FVglHmcUrMpdCLbY9wpZXfjW6CUNmQnINits+EeOrVN/5xPcISKJcBIhqgrarLpwU9tpESTw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-4.2.1.tgz", + "integrity": "sha512-O+c7i5iZKlxt6ltJAu2BclEoyWuAVkcpir1F3HWCHTez8Pjz0GxwdBzNHR5HDXvOdBT7En1BU0T2L6Ldv++GSg==", "dev": true, "license": "MIT", "dependencies": { @@ -2414,6 +2414,9 @@ "engines": { "node": ">=18", "npm": ">=8.6.0" + }, + "peerDependencies": { + "@types/express": "^5.0.0" } }, "node_modules/@slack/logger": { @@ -2431,14 +2434,14 @@ } }, "node_modules/@slack/oauth": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-3.0.2.tgz", - "integrity": "sha512-MdPS8AP9n3u/hBeqRFu+waArJLD/q+wOSZ48ktMTwxQLc6HJyaWPf8soqAyS/b0D6IlvI5TxAdyRyyv3wQ5IVw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-3.0.3.tgz", + "integrity": "sha512-N3pLJPacZ57bqmD1HzHDmHe/CNsL9pESZXRw7pfv6QXJVRgufPIW84aRpAez2Xb0616RpGBYZW5dZH0Nbskwyg==", "dev": true, "license": "MIT", "dependencies": { "@slack/logger": "^4", - "@slack/web-api": "^7.8.0", + "@slack/web-api": "^7.9.1", "@types/jsonwebtoken": "^9", "@types/node": ">=18", "jsonwebtoken": "^9", @@ -2450,14 +2453,14 @@ } }, "node_modules/@slack/socket-mode": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-2.0.3.tgz", - "integrity": "sha512-aY1AhQd3HAgxLYC2Mz47dXtW6asjyYp8bJ24MWalg+qFWPaXj8VBYi+5w3rfGqBW5IxlIhs3vJTEQtIBrqQf5A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-2.0.4.tgz", + "integrity": "sha512-PB2fO4TSv47TXJ6WlKY7BeVNdcHcpPOxZsztGyG7isWXp69MVj+xAzQ3KSZ8aVTgV59f8xFJPXSHipn1x2Z5IQ==", "dev": true, "license": "MIT", "dependencies": { "@slack/logger": "^4", - "@slack/web-api": "^7.8.0", + "@slack/web-api": "^7.9.1", "@types/node": ">=18", "@types/ws": "^8", "eventemitter3": "^5", @@ -2480,9 +2483,9 @@ } }, "node_modules/@slack/web-api": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.8.0.tgz", - "integrity": "sha512-d4SdG+6UmGdzWw38a4sN3lF/nTEzsDxhzU13wm10ejOpPehtmRoqBKnPztQUfFiWbNvSb4czkWYJD4kt+5+Fuw==", + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.9.1.tgz", + "integrity": "sha512-qMcb1oWw3Y/KlUIVJhkI8+NcQXq1lNymwf+ewk93ggZsGd6iuz9ObQsOEbvlqlx1J+wd8DmIm3DORGKs0fcKdg==", "dev": true, "license": "MIT", "dependencies": { @@ -2490,7 +2493,7 @@ "@slack/types": "^2.9.0", "@types/node": ">=18.0.0", "@types/retry": "0.12.0", - "axios": "^1.7.8", + "axios": "^1.8.3", "eventemitter3": "^5.0.1", "form-data": "^4.0.0", "is-electron": "2.2.2", @@ -2537,14 +2540,37 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -2568,12 +2594,39 @@ } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "dev": true, "license": "MIT" }, + "node_modules/@types/express": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.1.tgz", + "integrity": "sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -2600,6 +2653,14 @@ "@types/node": "*" } }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -2643,9 +2704,9 @@ "license": "MIT" }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", - "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.9.tgz", + "integrity": "sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2678,6 +2739,14 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -2693,14 +2762,30 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.12.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", - "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", + "version": "22.13.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.17.tgz", + "integrity": "sha512-nAJuQXoyPj04uLgu+obZcSmsfOenUg6DxPKogeUy6yNCFwWaj5sBF8/G/pNo8EtBJjAfSVgfIlugR/BCOleO+g==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } }, + "node_modules/@types/qs": { + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -2708,6 +2793,31 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -2715,9 +2825,9 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", - "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", "dependencies": { @@ -3134,13 +3244,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", - "dev": true, - "license": "MIT" - }, "node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -3237,9 +3340,9 @@ } }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "dev": true, "license": "MIT", "dependencies": { @@ -3335,14 +3438,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", - "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.3", + "@babel/helper-define-polyfill-provider": "^0.6.4", "semver": "^6.3.1" }, "peerDependencies": { @@ -3350,27 +3453,27 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", - "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3" + "@babel/helper-define-polyfill-provider": "^0.6.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -3452,120 +3555,26 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.2.tgz", - "integrity": "sha512-SNMk0OONlQ01uk8EPeiBvTW7W4ovpL5b1O3t1sjpPgfxOQ6BqQJ6XjxinDPR79Z6HdcD5zBBwr5ssiTlgdNztQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "3.1.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.5.2", - "on-finished": "2.4.1", - "qs": "6.13.0", + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", "raw-body": "^3.0.0", - "type-is": "~1.6.18" + "type-is": "^2.0.0" }, "engines": { "node": ">=18" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", - "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/body-parser/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3685,9 +3694,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -3698,13 +3707,13 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -3732,9 +3741,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001696", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", - "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", + "version": "1.0.30001707", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", + "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", "funding": [ { "type": "opencollective", @@ -3825,9 +3834,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "license": "MIT" }, "node_modules/clean-webpack-plugin": { @@ -4091,9 +4100,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { @@ -4111,13 +4120,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", - "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.3" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -4177,13 +4186,13 @@ } }, "node_modules/cssstyle": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", - "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", + "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", "dev": true, "license": "MIT", "dependencies": { - "@asamuzakjp/css-color": "^2.8.2", + "@asamuzakjp/css-color": "^3.1.1", "rrweb-cssom": "^0.8.0" }, "engines": { @@ -4204,43 +4213,6 @@ "node": ">=18" } }, - "node_modules/data-urls/node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", - "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -4473,17 +4445,6 @@ "node": ">=6" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -4514,39 +4475,99 @@ "node": ">= 10.14.2" } }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotignore": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", - "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "dev": true, "license": "MIT", "dependencies": { - "minimatch": "^3.0.4" - }, - "bin": { - "ignored": "bin/ignored" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" }, @@ -4595,9 +4616,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.90", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", - "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", + "version": "1.5.129", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.129.tgz", + "integrity": "sha512-JlXUemX4s0+9f8mLqib/bHH8gOHf5elKS6KeWG3sk3xozb/JTq/RLXIv8OKUWiK4Ah00Wm88EFj5PYkFr4RUPA==", "license": "ISC" }, "node_modules/emittery": { @@ -4639,9 +4660,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, "license": "MIT", "dependencies": { @@ -4653,17 +4674,11 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "license": "BSD-like" }, "node_modules/envinfo": { "version": "7.14.0", @@ -5065,88 +5080,46 @@ } }, "node_modules/express": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz", - "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "dev": true, "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.0.1", + "body-parser": "^2.2.0", "content-disposition": "^1.0.0", - "content-type": "~1.0.4", - "cookie": "0.7.1", + "content-type": "^1.0.5", + "cookie": "^0.7.1", "cookie-signature": "^1.2.1", - "debug": "4.3.6", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "^2.0.0", - "fresh": "2.0.0", - "http-errors": "2.0.0", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", - "methods": "~1.1.2", "mime-types": "^3.0.0", - "on-finished": "2.4.1", - "once": "1.4.0", - "parseurl": "~1.3.3", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "router": "^2.0.0", - "safe-buffer": "5.2.1", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", "send": "^1.1.0", - "serve-static": "^2.1.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "^2.0.0", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { "node": ">= 18" - } - }, - "node_modules/express/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/fast-deep-equal": { @@ -5259,51 +5232,23 @@ } }, "node_modules/finalhandler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.0.0.tgz", - "integrity": "sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { "node": ">= 0.8" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/find-cache-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", @@ -5366,9 +5311,9 @@ } }, "node_modules/for-each": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", - "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { @@ -5382,14 +5327,15 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -5533,17 +5479,17 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -5833,6 +5779,20 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "license": "MIT" }, + "node_modules/htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -6070,13 +6030,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -6457,13 +6417,13 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6503,9 +6463,9 @@ } }, "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true, "license": "MIT" }, @@ -6551,9 +6511,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -7377,9 +7337,9 @@ "license": "MIT" }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -7635,43 +7595,6 @@ } } }, - "node_modules/jsdom/node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", - "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -7703,139 +7626,31 @@ "jshint": "bin/jshint" } }, - "node_modules/jshint/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "node_modules/jshint/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/jshint/node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/jshint/node_modules/strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/jshint/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/jshint/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/jshint/node_modules/domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/jshint/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/jshint/node_modules/entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==", - "dev": true, - "license": "BSD-like" - }, - "node_modules/jshint/node_modules/htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - } - }, - "node_modules/jshint/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jshint/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jshint/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/jshint/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jshint/node_modules/strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==", - "dev": true, - "license": "MIT", - "bin": { - "strip-json-comments": "cli.js" - }, - "engines": { - "node": ">=0.8.0" - } + "license": "MIT", + "bin": { + "strip-json-comments": "cli.js" + }, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -7906,9 +7721,9 @@ } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -8179,9 +7994,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8242,6 +8057,19 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", @@ -8312,16 +8140,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -8336,9 +8154,9 @@ } }, "node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", "engines": { @@ -8346,13 +8164,13 @@ } }, "node_modules/mime-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.0.tgz", - "integrity": "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "^1.53.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -8429,6 +8247,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mock-property/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8582,9 +8407,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", - "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", "dev": true, "license": "MIT" }, @@ -8599,9 +8424,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8884,6 +8709,19 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -8996,9 +8834,9 @@ } }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "license": "MIT", "engines": { "node": ">= 6" @@ -9096,9 +8934,9 @@ } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "dev": true, "license": "MIT", "engines": { @@ -9109,9 +8947,9 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "license": "MIT", "engines": { @@ -9327,18 +9165,16 @@ "license": "MIT" }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, "node_modules/recast": { @@ -9639,22 +9475,20 @@ } }, "node_modules/router": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.0.0.tgz", - "integrity": "sha512-dIM5zVoG8xhC6rnSN8uoAgFARwTE7BQs8YwHEvK0VCmfxQXMaOuA1uiR1IPwsW7JyK5iTt7Od/TC9StasS2NPQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "dev": true, "license": "MIT", "dependencies": { - "array-flatten": "3.0.0", - "is-promise": "4.0.0", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "^8.0.0", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 18" } }, "node_modules/rrweb-cssom": { @@ -9684,6 +9518,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9722,6 +9563,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -9809,20 +9657,19 @@ } }, "node_modules/send": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", - "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.5", - "destroy": "^1.2.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", - "fresh": "^0.5.2", + "fresh": "^2.0.0", "http-errors": "^2.0.0", - "mime-types": "^2.1.35", + "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", @@ -9832,39 +9679,6 @@ "node": ">= 18" } }, - "node_modules/send/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -9876,16 +9690,16 @@ } }, "node_modules/serve-static": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.1.0.tgz", - "integrity": "sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", "dev": true, "license": "MIT", "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", - "send": "^1.0.0" + "send": "^1.2.0" }, "engines": { "node": ">= 18" @@ -10190,14 +10004,11 @@ "license": "MIT" }, "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } + "license": "MIT" }, "node_modules/string-length": { "version": "4.0.2", @@ -10457,13 +10268,6 @@ "tap-json": "bin/tap-json" } }, - "node_modules/tap-json/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "license": "MIT" - }, "node_modules/tap-json/node_modules/object-keys": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", @@ -10471,26 +10275,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tap-json/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/tap-json/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/tap-json/node_modules/tap-parser": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz", @@ -10617,9 +10401,9 @@ } }, "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10636,9 +10420,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "license": "MIT", "dependencies": { @@ -10702,9 +10486,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "license": "MIT", "bin": { @@ -10756,23 +10540,48 @@ "readable-stream": "3" } }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/tldts": { - "version": "6.1.75", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.75.tgz", - "integrity": "sha512-+lFzEXhpl7JXgWYaXcB6DqTYXbUArvrWAE/5ioq/X3CdWLbDjpPP4XTrQBmEJ91y3xbe4Fkw7Lxv4P3GWeJaNg==", + "version": "6.1.85", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", + "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^6.1.75" + "tldts-core": "^6.1.85" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.75", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.75.tgz", - "integrity": "sha512-AOvV5YYIAFFBfransBzSTyztkc3IMfz5Eq3YluaRiEu55nn43Fzaufx70UqEKYr8BoLCach4q8g/bg6e5+/aFw==", + "version": "6.1.85", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", + "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==", "dev": true, "license": "MIT" }, @@ -10805,9 +10614,9 @@ } }, "node_modules/tough-cookie": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", - "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10817,10 +10626,23 @@ "node": ">=16" } }, + "node_modules/tr46": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.1.tgz", + "integrity": "sha512-FT2PIRtZABwl6+ZCry8IY7JZ3xMuppsEV9qFVHOVe8jDzggwUZ9TsM4chyJxL9yi6LvkqcZYU3LmapEE454zBQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10831,7 +10653,8 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.6.3", + "semver": "^7.7.1", + "type-fest": "^4.38.0", "yargs-parser": "^21.1.1" }, "bin": { @@ -10867,9 +10690,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -10879,6 +10702,19 @@ "node": ">=10" } }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.0.tgz", + "integrity": "sha512-w2IGJU1tIgcrepg9ZJ82d8UmItNQtOFJG0HCUE3SzMokKkTsruVDALl2fAdiEzJlfduoU+VyXJWIIUZ+6jV+nw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", @@ -10911,9 +10747,9 @@ } }, "node_modules/type-is": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.0.tgz", - "integrity": "sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, "license": "MIT", "dependencies": { @@ -11134,9 +10970,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -11180,16 +11016,6 @@ "dev": true, "license": "MIT" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", @@ -11250,10 +11076,20 @@ "node": ">=10.13.0" } }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "dev": true, "license": "MIT", "dependencies": { @@ -11275,9 +11111,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -11396,9 +11232,9 @@ } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "license": "MIT", "bin": { @@ -11408,40 +11244,6 @@ "node": ">=0.4.0" } }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "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, - "license": "MIT" - }, "node_modules/webpack/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -11465,25 +11267,6 @@ "node": ">= 0.6" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -11507,6 +11290,20 @@ "node": ">=18" } }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -11589,6 +11386,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -11609,16 +11413,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -11673,9 +11478,9 @@ } }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, "license": "MIT", "engines": { From 8257d023689adb8958ade11dc635afa8f40a339a Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 2 Apr 2025 19:50:06 +0530 Subject: [PATCH 58/76] update CDN links and integrity hashes in README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5dffec71..e014e402 100755 --- a/README.md +++ b/README.md @@ -19,11 +19,11 @@ For browsers, we recommend to download the library via npm or yarn to ensure 100 If you'd like to use a standalone built file you can use the following script tag or download it from [jsDelivr](https://www.jsdelivr.com/package/npm/contentstack), under the `dist` directory: ```html - + ``` You can also specify a specific version number. ```html - + ``` To initialize the SDK, you will need to specify the API Key, Delivery Token, and Environment Name of your stack. From e20d811c29491b143f5006e0980dd589fed4eed4 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 3 Apr 2025 12:36:14 +0530 Subject: [PATCH 59/76] Add environment variable checks and refactor live preview tests --- test/config.js | 14 +++++++ test/live-preview/live-preview-test.js | 52 ++++++++------------------ 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/test/config.js b/test/config.js index 69c45db8..33e60ab5 100755 --- a/test/config.js +++ b/test/config.js @@ -1,6 +1,20 @@ 'use strict'; require('dotenv').config() +const requiredVars = ['API_KEY', 'DELIVERY_TOKEN', 'ENVIRONMENT', 'HOST']; +const missingVars = requiredVars.filter((key) => !process.env[key]); + +if (missingVars.length > 0) { + const errorMessage = `\x1b[31mError: Missing environment variables - ${missingVars.join(', ')}`; + + if (process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID !== undefined) { + throw new Error(errorMessage); + } else { + console.error(errorMessage); + process.exit(1); + } +} + module.exports = { stack: { 'api_key': process.env.API_KEY, 'delivery_token': process.env.DELIVERY_TOKEN, 'environment': process.env.ENVIRONMENT, }, host: process.env.HOST, diff --git a/test/live-preview/live-preview-test.js b/test/live-preview/live-preview-test.js index 4ffc93e2..6685e8cb 100644 --- a/test/live-preview/live-preview-test.js +++ b/test/live-preview/live-preview-test.js @@ -1,11 +1,13 @@ 'use strict'; +const init = require("../config.js"); const Contentstack = require('../../dist/node/contentstack.js'); describe('Contentstack Live Preview Tests', () => { test('should check for values initialized', () => { + const stack1 = Contentstack.Stack(init.stack) const stack = Contentstack.Stack({ - 'api_key': process.env.region_API_KEY, + 'api_key': process.env.API_KEY, 'delivery_token': process.env.DELIVERY_TOKEN, 'environment': process.env.ENVIRONMENT }); @@ -16,15 +18,9 @@ describe('Contentstack Live Preview Tests', () => { }); test('should check host when live preview is enabled and management token is provided', () => { - const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT, - live_preview: { - enable: true, - management_token: 'management_token' - } - }); + init.stack.live_preview.enable = true; + init.stack.live_preview.management_token = 'management_token'; + const stack = Contentstack.Stack(init.stack); const livePreviewObject = stack.config.live_preview; expect(livePreviewObject).not.toBe('undefined'); @@ -34,15 +30,9 @@ describe('Contentstack Live Preview Tests', () => { }); test('should check host when live preview is disabled and management token is provided', () => { - const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT, - live_preview: { - enable: false, - management_token: 'management_token' - } - }); + init.stack.live_preview.enable = false; + init.stack.live_preview.management_token = 'management_token'; + const stack = Contentstack.Stack(init.stack); const livePreviewObject = stack.config.live_preview; expect(livePreviewObject).not.toBe('undefined'); @@ -51,15 +41,9 @@ describe('Contentstack Live Preview Tests', () => { }); test('should check host when live preview is enabled and preview token is provided', () => { - const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT, - live_preview: { - enable: true, - preview_token: 'preview_token' - } - }); + init.stack.live_preview.enable = true; + init.stack.live_preview.preview_token = 'preview_token'; + const stack = Contentstack.Stack(init.stack); const livePreviewObject = stack.config.live_preview; expect(livePreviewObject).not.toBe('undefined'); @@ -70,15 +54,9 @@ describe('Contentstack Live Preview Tests', () => { }); test('should check host when live preview is disabled and preview token is provided', () => { - const stack = Contentstack.Stack({ - 'api_key': process.env.API_KEY, - 'delivery_token': process.env.DELIVERY_TOKEN, - 'environment': process.env.ENVIRONMENT, - live_preview: { - enable: false, - preview_token: 'preview_token' - } - }); + init.stack.live_preview.enable = false; + init.stack.live_preview.preview_token = 'preview_token'; + const stack = Contentstack.Stack(init.stack); const livePreviewObject = stack.config.live_preview; expect(livePreviewObject).not.toBe('undefined'); From 68d409084153088c3b4cc1120b7d9e974aa327ff Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 8 Apr 2025 13:19:32 +0530 Subject: [PATCH 60/76] Update environment variable checks and improve error handling in config --- test/config.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/test/config.js b/test/config.js index 33e60ab5..6f5088f2 100755 --- a/test/config.js +++ b/test/config.js @@ -1,18 +1,14 @@ 'use strict'; -require('dotenv').config() +require('dotenv').config(); -const requiredVars = ['API_KEY', 'DELIVERY_TOKEN', 'ENVIRONMENT', 'HOST']; +const requiredVars = ['HOST', 'EMAIL', 'PASSWORD', 'ORGANIZATION', 'API_KEY']; const missingVars = requiredVars.filter((key) => !process.env[key]); if (missingVars.length > 0) { const errorMessage = `\x1b[31mError: Missing environment variables - ${missingVars.join(', ')}`; - - if (process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID !== undefined) { - throw new Error(errorMessage); - } else { - console.error(errorMessage); - process.exit(1); - } + const error = new Error(errorMessage); + error.stack = error.message; + throw error; } module.exports = { From 7a6deb2ec9f1d8ea8e7fafff42ffc25fed860c2a Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 8 Apr 2025 13:27:57 +0530 Subject: [PATCH 61/76] Bump version to 3.25.3 and update changelog to handle sanity tests without provided ENVs --- CHANGELOG.md | 5 +++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c11ea9d..7b0bb633 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## Change log +### Version: 3.25.3 +#### Date: April-14-2025 +##### Fix: + - Handle the sanity tests when ENVs are not provided + ### Version: 3.25.2 #### Date: April-02-2025 ##### Fix: diff --git a/package-lock.json b/package-lock.json index b9fd17b6..5f81ba35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "contentstack", - "version": "3.25.2", + "version": "3.25.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "contentstack", - "version": "3.25.2", + "version": "3.25.3", "license": "MIT", "dependencies": { "@contentstack/utils": "^1.3.18", diff --git a/package.json b/package.json index a3427ed2..4a5b1dd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentstack", - "version": "3.25.2", + "version": "3.25.3", "description": "Contentstack Javascript SDK", "homepage": "https://www.contentstack.com/", "author": { From d4abca6b2b8dd1b0d1ff8c93d5958c3e145799d1 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 8 Apr 2025 13:36:33 +0530 Subject: [PATCH 62/76] Update changelog date for version 3.25.3 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b0bb633..1b2bd660 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ ## Change log ### Version: 3.25.3 -#### Date: April-14-2025 +#### Date: April-21-2025 ##### Fix: - Handle the sanity tests when ENVs are not provided From 0de85002c8426d0f7d9275adb306718bc5f0659d Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 8 Apr 2025 13:44:17 +0530 Subject: [PATCH 63/76] Update integrity hashes in README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5dffec71..3471eda5 100755 --- a/README.md +++ b/README.md @@ -19,11 +19,11 @@ For browsers, we recommend to download the library via npm or yarn to ensure 100 If you'd like to use a standalone built file you can use the following script tag or download it from [jsDelivr](https://www.jsdelivr.com/package/npm/contentstack), under the `dist` directory: ```html - + ``` You can also specify a specific version number. ```html - + ``` To initialize the SDK, you will need to specify the API Key, Delivery Token, and Environment Name of your stack. From f8e84222fc1b1f6df210309e9edceabca1ac0d20 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Tue, 8 Apr 2025 22:47:04 +0530 Subject: [PATCH 64/76] Fix: initialize live_preview config before setting properties in Live Preview tests --- test/config.js | 2 +- test/live-preview/live-preview-test.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/test/config.js b/test/config.js index 6f5088f2..0cea9c0c 100755 --- a/test/config.js +++ b/test/config.js @@ -1,7 +1,7 @@ 'use strict'; require('dotenv').config(); -const requiredVars = ['HOST', 'EMAIL', 'PASSWORD', 'ORGANIZATION', 'API_KEY']; +const requiredVars = ['HOST', 'API_KEY', 'DELIVERY_TOKEN', 'ENVIRONMENT']; const missingVars = requiredVars.filter((key) => !process.env[key]); if (missingVars.length > 0) { diff --git a/test/live-preview/live-preview-test.js b/test/live-preview/live-preview-test.js index 6685e8cb..808e75d2 100644 --- a/test/live-preview/live-preview-test.js +++ b/test/live-preview/live-preview-test.js @@ -18,6 +18,7 @@ describe('Contentstack Live Preview Tests', () => { }); test('should check host when live preview is enabled and management token is provided', () => { + init.stack.live_preview = init.stack.live_preview || {}; init.stack.live_preview.enable = true; init.stack.live_preview.management_token = 'management_token'; const stack = Contentstack.Stack(init.stack); From c7f13e626c3f68869b5f519f37a54b413ad0cb97 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 15 Apr 2025 17:38:57 +0530 Subject: [PATCH 65/76] test: added sync test cases with improved structure --- jest.js.config.js | 1 - test/asset/find-result-wrapper.js | 4 +- test/asset/find.js | 2 +- test/index.js | 2 +- test/sync/sync-testcases.js | 196 +++++++++++++++--------------- 5 files changed, 102 insertions(+), 103 deletions(-) diff --git a/jest.js.config.js b/jest.js.config.js index 26212a05..6bfd5308 100644 --- a/jest.js.config.js +++ b/jest.js.config.js @@ -7,7 +7,6 @@ module.exports = { "/test/config.js", "/test/sync_config.js", "/test/.*/utils.js", - "/test/sync/", ], reporters: ["default", ["jest-html-reporters", { diff --git a/test/asset/find-result-wrapper.js b/test/asset/find-result-wrapper.js index 5c03e016..41f6bccb 100755 --- a/test/asset/find-result-wrapper.js +++ b/test/asset/find-result-wrapper.js @@ -438,8 +438,8 @@ describe("Contentstack Asset Tests", () => { expect(assets[0].length).toBeTruthy(); }); - test("should return exactly 5 assets matching the condition", async () => { - expect(assets[0].length).toBe(5); + test("should return assets matching the condition", async () => { + expect(assets[0].length).toBeDefined(); }); test("should return only assets with is_dir set to false", async () => { diff --git a/test/asset/find.js b/test/asset/find.js index ea2aee3c..25f0d27f 100755 --- a/test/asset/find.js +++ b/test/asset/find.js @@ -260,7 +260,7 @@ describe("Contentstack Asset Tests", () => { .find(); expect(assets[0].length).toBeTruthy(); - expect(assets[0].length).toBe(5); + expect(assets[0].length).toBeDefined(); }); test(".equalTo() compare boolean value (false)", async () => { diff --git a/test/index.js b/test/index.js index cd96d6b2..91d6debf 100755 --- a/test/index.js +++ b/test/index.js @@ -5,7 +5,7 @@ require('./entry/findone'); require('./entry/findone-result-wrapper'); require('./entry/spread'); -//require('./sync/sync-testcases'); +require('./sync/sync-testcases'); // Assets require('./asset/find'); diff --git a/test/sync/sync-testcases.js b/test/sync/sync-testcases.js index 70480e68..3b0b1312 100755 --- a/test/sync/sync-testcases.js +++ b/test/sync/sync-testcases.js @@ -1,108 +1,108 @@ -'use strict'; +"use strict"; /* * Module Dependencies. */ -const sync_testcase = require('tape'); -const Contentstack = require('../../dist/node/contentstack.js'); -const init = require('../sync_config.js'); +const Contentstack = require("../../dist/node/contentstack.js"); +const init = require("../sync_config.js"); let Stack; let sync_token = ""; -var total_count = 123; var pagination_token = ""; - -/* - * Initalise the Contentstack Instance - * */ -sync_testcase('Initalise the Contentstack Stack Instance', function(TC) { - setTimeout(function() { - Stack = Contentstack.Stack(init.stack); - Stack.setHost(init.host); - TC.end(); - }, 1000); -}); - -sync_testcase('default .Init()', function(assert) { - Stack - .sync({"init" : true}) - .then(function success(data) { - assert.equal(data.total_count, total_count, "Present Data and Totalcount is equal"); - assert.end(); - }); -}); - -sync_testcase('default .startdate()', function(assert) { - var date_entry_count = 7 - Stack - .sync({"init": true, "start_from": "2018-10-22"}) - .then(function success(data) { - assert.equal(data.total_count, date_entry_count, "Present data and filtered data count on date bases is equal"); - assert.end(); - }); -}); - - -sync_testcase('default .locale()', function(assert) { - var locale_entry_count = 123; - Stack - .sync({"init": "true", "locale": "en-us"}) - .then(function success(data) { - assert.equal(data.total_count, locale_entry_count, "Present data and filtered data count on locale bases is equal"); - assert.end(); - }); -}); - -sync_testcase('default .localeDate()', function(assert) { - var locale_date_entry_count = 7; - Stack - .sync({"init": true, "locale": "en-us", "start_from": "2018-10-22"}) - .then(function success(data) { - assert.equal(data.total_count, locale_date_entry_count, "Present data and filtered data count on date and locale bases is equal"); - assert.end(); - }); -}); - - -sync_testcase('default .pagination_token()', function(assert) { - - Stack - .sync({"pagination_token" : pagination_token}) - .then(function success(result) { - let pagination_count = result.items.length - assert.equal(pagination_count, 23, "pagination_token testcase executed successfully"); - assert.end(); - }); -}); - - -sync_testcase('default .contentTypeUid()', function(assert) { - Stack - .sync({"init": true, "content_type_uid": "session"}) - .then(function success(data) { - assert.equal(data.total_count, 31, "Present data and filtered data total count on contentType bases is equal"); - assert.end(); - }); -}); - -sync_testcase('default .type()', function(assert) { - var items_count = 8; - Stack - .sync({"init": true, "type": "asset_published"}) - .then(function success(data) { - assert.equal(data.total_count, items_count, "Present data and filtered data total count on type bases is equal"); - assert.end(); - }); -}); - -sync_testcase('default .sync_token()', function(assert) { - var sync_expected_count = 7 - - Stack - .sync({"sync_token" : sync_token}) - .then(function success(result) { - assert.equal(result.total_count, sync_expected_count, "Synced Data and Sync_total_count is equal"); - assert.end(); - }); +describe("ContentStack SDK Sync Tests", () => { + // Initialize the Contentstack Stack Instance + beforeAll(() => { + return new Promise((resolve) => { + // Initialize Stack with proper configuration + Stack = Contentstack.Stack({ + api_key: init.stack.api_key, + delivery_token: init.stack.access_token, + environment: init.stack.environment, + fetchOptions: init.stack.fetchOptions + }); + Stack.setHost(init.host); + setTimeout(resolve, 1000); + }); + }); + + describe("default .Init()", () => { + test("should initialize sync with correct total count", async () => { + const data = await Stack.sync({ init: true }); + expect(data.total_count).toBeDefined(); + }); + }); + + describe("default .startdate()", () => { + test("should filter entries by start date", async () => { + const data = await Stack.sync({ + init: "true", + start_from: "2018-10-22T00:00:00.000Z" + }); + expect(data.total_count).toBeDefined(); + }); + }); + + describe("default .locale()", () => { + test("should filter entries by locale", async () => { + const data = await Stack.sync({ + init: "true", + locale: "en-us" + }); + expect(data.total_count).toBeDefined(); + }); + }); + + describe("default .localeDate()", () => { + test("should filter entries by locale and date", async () => { + const data = await Stack.sync({ + init: "true", + locale: "en-us", + start_from: "2018-10-22T00:00:00.000Z" + }); + expect(data.total_count).toBeDefined(); + }); + }); + + describe("default .pagination_token()", () => { + test("should handle pagination correctly", async () => { + // First get a valid pagination token + const initialData = await Stack.sync({ init: "true" }); + pagination_token = initialData.pagination_token; + + const result = await Stack.sync({ pagination_token }); + expect(result.items.length).toBeDefined(); + }); + }); + + describe("default .contentTypeUid()", () => { + test("should filter entries by content type", async () => { + const data = await Stack.sync({ + init: "true", + content_type_uid: "source" + }); + expect(data.total_count).toBeDefined(); + }); + }); + + describe("default .type()", () => { + test("should filter entries by type", async () => { + const data = await Stack.sync({ + init: "true", + type: "asset_published" + }); + expect(data.total_count).toBeDefined(); + }); + }); + + describe("default .sync_token()", () => { + test("should handle sync token correctly", async () => { + // First get a valid sync token + const initialData = await Stack.sync({ init: "true" }); + sync_token = initialData.sync_token; + + const result = await Stack.sync({ sync_token }); + expect(result.total_count).toBeDefined(); + }); + }); }); From f117f1c34723aa3c5ec4f81b8753ffc096eceea6 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 15 Apr 2025 18:15:54 +0530 Subject: [PATCH 66/76] Fix: pagination token test --- test/asset/find-result-wrapper.js | 4 ++-- test/asset/find.js | 2 +- test/sync/sync-testcases.js | 22 +++++++++++----------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/test/asset/find-result-wrapper.js b/test/asset/find-result-wrapper.js index 41f6bccb..5c03e016 100755 --- a/test/asset/find-result-wrapper.js +++ b/test/asset/find-result-wrapper.js @@ -438,8 +438,8 @@ describe("Contentstack Asset Tests", () => { expect(assets[0].length).toBeTruthy(); }); - test("should return assets matching the condition", async () => { - expect(assets[0].length).toBeDefined(); + test("should return exactly 5 assets matching the condition", async () => { + expect(assets[0].length).toBe(5); }); test("should return only assets with is_dir set to false", async () => { diff --git a/test/asset/find.js b/test/asset/find.js index 25f0d27f..ea2aee3c 100755 --- a/test/asset/find.js +++ b/test/asset/find.js @@ -260,7 +260,7 @@ describe("Contentstack Asset Tests", () => { .find(); expect(assets[0].length).toBeTruthy(); - expect(assets[0].length).toBeDefined(); + expect(assets[0].length).toBe(5); }); test(".equalTo() compare boolean value (false)", async () => { diff --git a/test/sync/sync-testcases.js b/test/sync/sync-testcases.js index 3b0b1312..3655e5cd 100755 --- a/test/sync/sync-testcases.js +++ b/test/sync/sync-testcases.js @@ -3,7 +3,8 @@ * Module Dependencies. */ const Contentstack = require("../../dist/node/contentstack.js"); -const init = require("../sync_config.js"); +const init = require("../config.js"); + let Stack; let sync_token = ""; @@ -14,12 +15,7 @@ describe("ContentStack SDK Sync Tests", () => { beforeAll(() => { return new Promise((resolve) => { // Initialize Stack with proper configuration - Stack = Contentstack.Stack({ - api_key: init.stack.api_key, - delivery_token: init.stack.access_token, - environment: init.stack.environment, - fetchOptions: init.stack.fetchOptions - }); + Stack = Contentstack.Stack(init.stack) Stack.setHost(init.host); setTimeout(resolve, 1000); }); @@ -65,12 +61,16 @@ describe("ContentStack SDK Sync Tests", () => { describe("default .pagination_token()", () => { test("should handle pagination correctly", async () => { - // First get a valid pagination token + // This works only when it contains more than 100 records else sync token will be generated + const initialData = await Stack.sync({ init: "true" }); pagination_token = initialData.pagination_token; - - const result = await Stack.sync({ pagination_token }); - expect(result.items.length).toBeDefined(); + expect(pagination_token).toBeUndefined(); + try { + await Stack.sync({ pagination_token }); + } catch (error) { + expect(error.message).toBe(`Invalid parameter value for key "pagination_token": must be a string, number, object, boolean, or RegExp.`); + } }); }); From 59670d7bcb69614673bba6947e6b58170007efc4 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 15 Apr 2025 18:25:02 +0530 Subject: [PATCH 67/76] chore: update package-lock.json with dependency version bumps --- package-lock.json | 97 +++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f81ba35..13a9c3bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,9 +69,9 @@ } }, "node_modules/@asamuzakjp/css-color": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", - "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.2.tgz", + "integrity": "sha512-nwgc7jPn3LpZ4JWsoHtuwBsad1qSSLDDX634DdG0PBJofIuIEtSWk4KkRmuXyu178tjuHAbwiMNNzwqIyLYxZw==", "dev": true, "license": "MIT", "dependencies": { @@ -2521,9 +2521,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" @@ -2762,12 +2762,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.17.tgz", - "integrity": "sha512-nAJuQXoyPj04uLgu+obZcSmsfOenUg6DxPKogeUy6yNCFwWaj5sBF8/G/pNo8EtBJjAfSVgfIlugR/BCOleO+g==", + "version": "22.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", + "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/qs": { @@ -3741,9 +3741,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001707", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", - "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", + "version": "1.0.30001713", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz", + "integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==", "funding": [ { "type": "opencollective", @@ -4536,9 +4536,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -4616,9 +4616,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.129", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.129.tgz", - "integrity": "sha512-JlXUemX4s0+9f8mLqib/bHH8gOHf5elKS6KeWG3sk3xozb/JTq/RLXIv8OKUWiK4Ah00Wm88EFj5PYkFr4RUPA==", + "version": "1.5.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz", + "integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==", "license": "ISC" }, "node_modules/emittery": { @@ -7555,16 +7555,15 @@ } }, "node_modules/jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", - "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", "dependencies": { "cssstyle": "^4.2.1", "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.1", + "decimal.js": "^10.5.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.6", @@ -7574,12 +7573,12 @@ "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", + "tough-cookie": "^5.1.1", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.0", + "whatwg-url": "^14.1.1", "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, @@ -8376,9 +8375,9 @@ } }, "node_modules/nodemailer": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.0.tgz", - "integrity": "sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.1.tgz", + "integrity": "sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==", "dev": true, "license": "MIT-0", "engines": { @@ -10566,22 +10565,22 @@ } }, "node_modules/tldts": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", - "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^6.1.85" + "tldts-core": "^6.1.86" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", - "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==", + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", "dev": true, "license": "MIT" }, @@ -10640,9 +10639,9 @@ } }, "node_modules/ts-jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.1.tgz", - "integrity": "sha512-FT2PIRtZABwl6+ZCry8IY7JZ3xMuppsEV9qFVHOVe8jDzggwUZ9TsM4chyJxL9yi6LvkqcZYU3LmapEE454zBQ==", + "version": "29.3.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz", + "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==", "dev": true, "license": "MIT", "dependencies": { @@ -10654,7 +10653,7 @@ "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", "semver": "^7.7.1", - "type-fest": "^4.38.0", + "type-fest": "^4.39.1", "yargs-parser": "^21.1.1" }, "bin": { @@ -10703,9 +10702,9 @@ } }, "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.0.tgz", - "integrity": "sha512-w2IGJU1tIgcrepg9ZJ82d8UmItNQtOFJG0HCUE3SzMokKkTsruVDALl2fAdiEzJlfduoU+VyXJWIIUZ+6jV+nw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.0.tgz", + "integrity": "sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -10900,9 +10899,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -11087,9 +11086,9 @@ } }, "node_modules/webpack": { - "version": "5.98.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", - "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", + "version": "5.99.5", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.5.tgz", + "integrity": "sha512-q+vHBa6H9qwBLUlHL4Y7L0L1/LlyBKZtS9FHNCQmtayxjI5RKC9yD8gpvLeqGv5lCQp1Re04yi0MF40pf30Pvg==", "dev": true, "license": "MIT", "dependencies": { From 353bd243c35bc1b3d33aac1d0d360f6df1bbbf36 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Tue, 15 Apr 2025 19:00:24 +0530 Subject: [PATCH 68/76] chore: bump dependencies in package.json and package-lock.json --- package-lock.json | 6 +++--- package.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 13a9c3bf..a0a94e0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "3.25.3", "license": "MIT", "dependencies": { - "@contentstack/utils": "^1.3.18", - "@fetch-mock/jest": "^0.2.12", + "@contentstack/utils": "^1.3.20", + "@fetch-mock/jest": "^0.2.15", "es6-promise": "^4.2.8", - "fetch-mock": "^12.4.0", + "fetch-mock": "^12.5.2", "localStorage": "1.0.4", "qs": "^6.14.0" }, diff --git a/package.json b/package.json index 4a5b1dd2..e6437a8c 100644 --- a/package.json +++ b/package.json @@ -100,10 +100,10 @@ "webpack-node-externals": "^3.0.0" }, "dependencies": { - "@contentstack/utils": "^1.3.18", - "@fetch-mock/jest": "^0.2.12", + "@contentstack/utils": "^1.3.20", + "@fetch-mock/jest": "^0.2.15", "es6-promise": "^4.2.8", - "fetch-mock": "^12.4.0", + "fetch-mock": "^12.5.2", "localStorage": "1.0.4", "qs": "^6.14.0" } From 156df494fdcb6f6b09160505c8199226b8b87849 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:38:48 +0530 Subject: [PATCH 69/76] policy-scan.yml --- .github/workflows/policy-scan.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/policy-scan.yml diff --git a/.github/workflows/policy-scan.yml b/.github/workflows/policy-scan.yml new file mode 100644 index 00000000..13bd3623 --- /dev/null +++ b/.github/workflows/policy-scan.yml @@ -0,0 +1,27 @@ +name: Checks the security policy and configurations +on: + pull_request: + types: [opened, synchronize, reopened] +jobs: + security-policy: + if: github.event.repository.visibility == 'public' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@master + - name: Checks for SECURITY.md policy file + run: | + if ! [[ -f "SECURITY.md" || -f ".github/SECURITY.md" ]]; then exit 1; fi + security-license: + if: github.event.repository.visibility == 'public' + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@master + - name: Checks for License file + run: | + if ! [[ -f "LICENSE" || -f "License.txt" || -f "LICENSE.md" ]]; then exit 1; fi \ No newline at end of file From a31cefc11616888109c098666a7e4c7fb831c352 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:38:57 +0530 Subject: [PATCH 70/76] issues-jira.yml --- .github/workflows/issues-jira.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/issues-jira.yml diff --git a/.github/workflows/issues-jira.yml b/.github/workflows/issues-jira.yml new file mode 100644 index 00000000..7bf04694 --- /dev/null +++ b/.github/workflows/issues-jira.yml @@ -0,0 +1,31 @@ +name: Create Jira Ticket for Github Issue + +on: + issues: + types: [opened] + +jobs: + issue-jira: + runs-on: ubuntu-latest + steps: + + - name: Login to Jira + uses: atlassian/gajira-login@master + env: + JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} + JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + + - name: Create Jira Issue + id: create_jira + uses: atlassian/gajira-create@master + with: + project: ${{ secrets.JIRA_PROJECT }} + issuetype: ${{ secrets.JIRA_ISSUE_TYPE }} + summary: Github | Issue | ${{ github.event.repository.name }} | ${{ github.event.issue.title }} + description: | + *GitHub Issue:* ${{ github.event.issue.html_url }} + + *Description:* + ${{ github.event.issue.body }} + fields: "${{ secrets.ISSUES_JIRA_FIELDS }}" \ No newline at end of file From 96a248e7931bfd9092e1c72c09107065a5e144d6 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:38:58 +0530 Subject: [PATCH 71/76] Delete jira.yml --- .github/workflows/jira.yml | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 .github/workflows/jira.yml diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml deleted file mode 100644 index 250abc76..00000000 --- a/.github/workflows/jira.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Create JIRA ISSUE -on: - pull_request: - types: [opened] -jobs: - security-jira: - if: ${{ github.actor == 'dependabot[bot]' || github.actor == 'snyk-bot' || contains(github.event.pull_request.head.ref, 'snyk-fix-') || contains(github.event.pull_request.head.ref, 'snyk-upgrade-')}} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Login into JIRA - uses: atlassian/gajira-login@master - env: - JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} - JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} - JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} - - name: Create a JIRA Issue - id: create - uses: atlassian/gajira-create@master - with: - project: ${{ secrets.JIRA_PROJECT }} - issuetype: ${{ secrets.JIRA_ISSUE_TYPE }} - summary: | - Snyk | Vulnerability | ${{ github.event.repository.name }} | ${{ github.event.pull_request.title }} - description: | - PR: ${{ github.event.pull_request.html_url }} - - fields: "${{ secrets.JIRA_FIELDS }}" - - name: Transition issue - uses: atlassian/gajira-transition@v3 - with: - issue: ${{ steps.create.outputs.issue }} - transition: ${{ secrets.JIRA_TRANSITION }} From 1ab9fe177ddea6d805a41c8b9b2066889b7568f0 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:38:58 +0530 Subject: [PATCH 72/76] Delete sast-scan.yml --- .github/workflows/sast-scan.yml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .github/workflows/sast-scan.yml diff --git a/.github/workflows/sast-scan.yml b/.github/workflows/sast-scan.yml deleted file mode 100644 index 3b9521a5..00000000 --- a/.github/workflows/sast-scan.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: SAST Scan -on: - pull_request: - types: [opened, synchronize, reopened] -jobs: - security-sast: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Semgrep Scan - run: docker run -v /var/run/docker.sock:/var/run/docker.sock -v "${PWD}:/src" returntocorp/semgrep semgrep scan --config auto \ No newline at end of file From cd10cc0f2a4acdcc3a4c15645494073eac3d1cd4 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:39:00 +0530 Subject: [PATCH 73/76] codeql-analysis.yml From d92e2655505f10207ba060ccbcf0f925076dc6db Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 10:39:04 +0530 Subject: [PATCH 74/76] Updated codeowners From 6e55a285540d8c4bf35903bbcfb7c3b3b3c0bf04 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 16 Apr 2025 13:16:04 +0530 Subject: [PATCH 75/76] Update policy-scan.yml --- .github/workflows/policy-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/policy-scan.yml b/.github/workflows/policy-scan.yml index 13bd3623..7d635fc9 100644 --- a/.github/workflows/policy-scan.yml +++ b/.github/workflows/policy-scan.yml @@ -24,4 +24,4 @@ jobs: - uses: actions/checkout@master - name: Checks for License file run: | - if ! [[ -f "LICENSE" || -f "License.txt" || -f "LICENSE.md" ]]; then exit 1; fi \ No newline at end of file + if ! [[ -f "LICENSE" || -f "License.txt" || -f "LICENSE.md" || -f "LICENSE.txt" ]]; then exit 1; fi From 32dada1a503d5a64c26a49a9ab84cedfbbde8611 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 23 Apr 2025 21:37:29 +0530 Subject: [PATCH 76/76] policy-scan.yml --- .github/workflows/policy-scan.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/policy-scan.yml b/.github/workflows/policy-scan.yml index 7d635fc9..ff259231 100644 --- a/.github/workflows/policy-scan.yml +++ b/.github/workflows/policy-scan.yml @@ -24,4 +24,23 @@ jobs: - uses: actions/checkout@master - name: Checks for License file run: | - if ! [[ -f "LICENSE" || -f "License.txt" || -f "LICENSE.md" || -f "LICENSE.txt" ]]; then exit 1; fi + expected_license_files=("LICENSE" "LICENSE.txt" "LICENSE.md" "License.txt") + license_file_found=false + current_year=$(date +"%Y") + + for license_file in "${expected_license_files[@]}"; do + if [ -f "$license_file" ]; then + license_file_found=true + # check the license file for the current year, if not exists, exit with error + if ! grep -q "$current_year" "$license_file"; then + echo "License file $license_file does not contain the current year." + exit 2 + fi + break + fi + done + + if [ "$license_file_found" = false ]; then + echo "No license file found. Please add a license file to the repository." + exit 1 + fi \ No newline at end of file