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
diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml
deleted file mode 100644
index caa4bbdf..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: |
- ${{ 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 }}
diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml
index 88017fe3..5bdea649 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,10 +25,11 @@ 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
- - run: npm publish
env:
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
diff --git a/.github/workflows/policy-scan.yml b/.github/workflows/policy-scan.yml
new file mode 100644
index 00000000..ff259231
--- /dev/null
+++ b/.github/workflows/policy-scan.yml
@@ -0,0 +1,46 @@
+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: |
+ 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
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
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e88349c..d1b89af9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,54 @@
## Change log
+### Version: 3.25.3
+#### Date: April-21-2025
+##### Fix:
+ - Handle the sanity tests when ENVs are not provided.
+
+### 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:
+ - Update dependencies
+ - Update slack notification
+
+### Version: 3.25.0
+#### Date: March-10-2025
+##### Fix:
+ - Added GCP-EU support
+
+### 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
+
+### 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
+##### Enhancement:
+ - Added HTTP error codes in the findOne method
+
### Version: 3.22.2
#### Date: November-18-2024
##### Fix:
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
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/README.md b/README.md
index 0e7ef966..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.
@@ -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
@@ -292,7 +292,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..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
@@ -151,7 +152,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/jest.js.config.js b/jest.js.config.js
new file mode 100644
index 00000000..6bfd5308
--- /dev/null
+++ b/jest.js.config.js
@@ -0,0 +1,20 @@
+module.exports = {
+ testEnvironment: "node",
+ testMatch: ["**/test/**/*.js"],
+ testPathIgnorePatterns: [
+ "/node_modules/",
+ "/test/index.js",
+ "/test/config.js",
+ "/test/sync_config.js",
+ "/test/.*/utils.js",
+ ],
+ 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
diff --git a/package-lock.json b/package-lock.json
index d121dbe1..a0a94e0c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,54 +1,54 @@
{
"name": "contentstack",
- "version": "3.22.2",
+ "version": "3.25.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "contentstack",
- "version": "3.22.2",
+ "version": "3.25.3",
"license": "MIT",
"dependencies": {
- "@contentstack/utils": "^1.3.12",
- "cheerio": "^1.0.0",
+ "@contentstack/utils": "^1.3.20",
+ "@fetch-mock/jest": "^0.2.15",
"es6-promise": "^4.2.8",
- "fetch-mock": "^11.1.5",
- "isomorphic-fetch": "^3.0.0",
+ "fetch-mock": "^12.5.2",
"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",
+ "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",
- "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": {
@@ -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",
@@ -69,11 +68,31 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@asamuzakjp/css-color": {
+ "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": {
+ "@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"
+ }
+ },
+ "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",
"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.25.9",
@@ -85,32 +104,30 @@
}
},
"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==",
- "dev": true,
+ "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.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
- "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
- "dev": true,
+ "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.0",
- "@babel/generator": "^7.26.0",
- "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.10",
+ "@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/template": "^7.25.9",
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.26.0",
+ "@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",
@@ -126,14 +143,13 @@
}
},
"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==",
- "dev": true,
+ "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.2",
- "@babel/types": "^7.26.0",
+ "@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"
@@ -155,28 +171,13 @@
"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==",
- "dev": true,
+ "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.25.9",
+ "@babel/compat-data": "^7.26.8",
"@babel/helper-validator-option": "^7.25.9",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -187,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": {
@@ -209,14 +210,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.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": {
"@babel/helper-annotate-as-pure": "^7.25.9",
- "regexpu-core": "^6.1.1",
+ "regexpu-core": "^6.2.0",
"semver": "^6.3.1"
},
"engines": {
@@ -227,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": {
@@ -261,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",
@@ -275,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",
@@ -303,10 +302,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==",
- "dev": true,
+ "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==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -331,15 +329,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 +346,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",
@@ -380,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"
@@ -390,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"
@@ -400,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"
@@ -422,27 +403,25 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
- "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
- "dev": true,
+ "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.0"
+ "@babel/template": "^7.27.0",
+ "@babel/types": "^7.27.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"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==",
- "dev": true,
+ "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.0"
+ "@babel/types": "^7.27.0"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -552,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"
@@ -565,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"
@@ -578,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"
@@ -591,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"
@@ -623,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"
@@ -639,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"
@@ -652,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"
@@ -665,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"
@@ -681,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"
@@ -694,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"
@@ -707,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"
@@ -720,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"
@@ -733,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"
@@ -746,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"
@@ -759,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"
@@ -775,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"
@@ -791,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"
@@ -837,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"
@@ -873,13 +835,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"
@@ -889,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"
@@ -1059,13 +1021,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": {
@@ -1092,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": {
@@ -1208,15 +1169,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 +1255,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"
@@ -1462,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": {
@@ -1561,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"
@@ -1577,13 +1537,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.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": {
- "@babel/helper-plugin-utils": "^7.25.9"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1660,15 +1620,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.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.0",
- "@babel/helper-compilation-targets": "^7.25.9",
- "@babel/helper-plugin-utils": "^7.25.9",
+ "@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",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
@@ -1680,9 +1640,9 @@
"@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.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",
@@ -1693,21 +1653,21 @@
"@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-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",
"@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",
@@ -1723,17 +1683,17 @@
"@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-typeof-symbol": "^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",
"@babel/plugin-transform-unicode-regex": "^7.25.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": {
@@ -1759,9 +1719,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.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": {
@@ -1772,32 +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==",
- "dev": true,
+ "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.25.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
- "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
- "dev": true,
+ "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.25.9",
- "@babel/generator": "^7.25.9",
- "@babel/parser": "^7.25.9",
- "@babel/template": "^7.25.9",
- "@babel/types": "^7.25.9",
+ "@babel/code-frame": "^7.26.2",
+ "@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"
},
@@ -1806,10 +1764,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==",
- "dev": true,
+ "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",
@@ -1823,30 +1780,159 @@
"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": {
- "version": "1.3.13",
- "resolved": "https://registry.npmjs.org/@contentstack/utils/-/utils-1.3.13.tgz",
- "integrity": "sha512-Lp4UIHMdSxMjCmcK93L987Kxa/wnucRlR7CjVBMd1bD8auJSPFh7E3aP9fnvzjzSWockBRYbXkOq6KLojgXlPA==",
+ "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": {
+ "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": [
+ {
+ "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.2",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz",
+ "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==",
+ "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.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": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/color-helpers": "^5.0.2",
+ "@csstools/css-calc": "^2.1.2"
+ },
+ "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.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/@fetch-mock/jest": {
+ "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.5.2"
+ },
+ "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",
@@ -1863,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"
@@ -1873,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",
@@ -1891,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",
@@ -1939,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"
@@ -1952,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",
@@ -1967,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",
@@ -1990,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",
@@ -2004,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"
@@ -2017,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",
@@ -2035,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",
@@ -2051,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",
@@ -2095,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"
@@ -2108,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",
@@ -2123,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",
@@ -2139,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",
@@ -2155,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",
@@ -2182,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",
@@ -2197,10 +2265,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==",
- "dev": true,
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
"license": "MIT",
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
@@ -2215,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"
@@ -2225,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"
@@ -2246,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",
@@ -2261,9 +2324,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": {
@@ -2287,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"
@@ -2310,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"
@@ -2327,37 +2388,35 @@
"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"
}
},
"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.1",
+ "resolved": "https://registry.npmjs.org/@slack/bolt/-/bolt-4.2.1.tgz",
+ "integrity": "sha512-O+c7i5iZKlxt6ltJAu2BclEoyWuAVkcpir1F3HWCHTez8Pjz0GxwdBzNHR5HDXvOdBT7En1BU0T2L6Ldv++GSg==",
"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"
+ },
+ "peerDependencies": {
+ "@types/express": "^5.0.0"
}
},
"node_modules/@slack/logger": {
@@ -2375,70 +2434,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.3",
+ "resolved": "https://registry.npmjs.org/@slack/oauth/-/oauth-3.0.3.tgz",
+ "integrity": "sha512-N3pLJPacZ57bqmD1HzHDmHe/CNsL9pESZXRw7pfv6QXJVRgufPIW84aRpAez2Xb0616RpGBYZW5dZH0Nbskwyg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/node": ">=12.0.0"
+ "@slack/logger": "^4",
+ "@slack/web-api": "^7.9.1",
+ "@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.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": "^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.9.1",
+ "@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,55 +2483,34 @@
}
},
"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.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": {
- "@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.8.3",
+ "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",
"integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.20.7",
@@ -2512,10 +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==",
- "dev": true,
+ "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"
@@ -2525,7 +2533,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",
@@ -2533,10 +2540,9 @@
}
},
"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==",
- "dev": true,
+ "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"
@@ -2548,6 +2554,7 @@
"integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/connect": "*",
"@types/node": "*"
@@ -2559,6 +2566,7 @@
"integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/node": "*"
}
@@ -2586,31 +2594,32 @@
}
},
"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": "4.17.21",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
- "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "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": "^4.17.33",
- "@types/qs": "*",
+ "@types/express-serve-static-core": "^5.0.0",
"@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==",
+ "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": "*",
@@ -2639,7 +2648,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": "*"
@@ -2650,30 +2658,19 @@
"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": "*"
- }
+ "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",
"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": "*"
@@ -2683,7 +2680,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": "*"
@@ -2708,12 +2704,13 @@
"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.9",
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.9.tgz",
+ "integrity": "sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "@types/ms": "*",
"@types/node": "*"
}
},
@@ -2747,7 +2744,8 @@
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@types/minimatch": {
"version": "5.1.2",
@@ -2756,36 +2754,37 @@
"dev": true,
"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==",
+ "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.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.19.8"
+ "undici-types": "~6.21.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==",
+ "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"
+ "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"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@types/retry": {
"version": "0.12.0",
@@ -2800,6 +2799,7 @@
"integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/mime": "^1",
"@types/node": "*"
@@ -2811,6 +2811,7 @@
"integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/http-errors": "*",
"@types/node": "*",
@@ -2821,20 +2822,12 @@
"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/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.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": {
@@ -2845,7 +2838,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": "*"
@@ -2855,7 +2847,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": {
@@ -3020,37 +3011,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 +3072,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 +3099,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 +3156,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",
@@ -3186,7 +3170,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"
@@ -3202,7 +3185,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"
@@ -3212,7 +3194,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"
@@ -3228,7 +3209,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",
@@ -3242,21 +3222,20 @@
"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"
}
},
"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,13 +3244,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
- "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",
@@ -3295,42 +3267,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"
@@ -3356,6 +3306,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",
@@ -3363,16 +3323,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 +3340,9 @@
}
},
"node_modules/axios": {
- "version": "1.7.7",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
- "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
+ "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3401,26 +3351,10 @@
"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",
"integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@jest/transform": "^29.7.0",
@@ -3460,7 +3394,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",
@@ -3477,7 +3410,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",
@@ -3494,7 +3426,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",
@@ -3507,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": {
@@ -3522,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"
@@ -3552,7 +3483,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",
@@ -3579,7 +3509,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",
@@ -3596,7 +3525,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": {
@@ -3627,71 +3555,30 @@
"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==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.13.0",
- "raw-body": "2.5.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "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==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "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": "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": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "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": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
}
},
- "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/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",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -3702,7 +3589,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"
@@ -3712,10 +3598,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==",
- "dev": true,
+ "version": "4.24.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"funding": [
{
"type": "opencollective",
@@ -3732,9 +3617,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": {
@@ -3761,7 +3646,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"
@@ -3778,7 +3662,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,16 +3675,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.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",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "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.2",
+ "get-intrinsic": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
@@ -3814,7 +3726,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"
@@ -3824,17 +3735,15 @@
"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"
}
},
"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==",
- "dev": true,
+ "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",
@@ -3864,25 +3773,10 @@
"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",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -3899,7 +3793,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"
@@ -3915,48 +3808,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",
@@ -3971,7 +3822,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",
@@ -3984,10 +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==",
- "dev": true,
+ "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": {
@@ -4024,7 +3873,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",
@@ -4050,21 +3898,10 @@
"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",
"integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "dev": true,
"license": "MIT",
"engines": {
"iojs": ">= 1.0.0",
@@ -4075,14 +3912,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"
@@ -4095,7 +3930,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": {
@@ -4201,17 +4035,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",
@@ -4225,7 +4059,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": {
@@ -4238,9 +4071,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": {
@@ -4264,13 +4097,12 @@
"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": {
- "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": {
@@ -4278,32 +4110,23 @@
}
},
"node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
- "dev": true,
- "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": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
"dev": true,
- "hasInstallScript": true,
"license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
+ "engines": {
+ "node": ">=6.6.0"
}
},
"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.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.2"
+ "browserslist": "^4.24.4"
},
"funding": {
"type": "opencollective",
@@ -4321,7 +4144,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",
@@ -4340,10 +4162,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==",
- "dev": true,
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
@@ -4364,44 +4185,44 @@
"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.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz",
+ "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==",
+ "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": "^3.1.1",
+ "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": {
- "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 +4232,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,10 +4274,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==",
- "dev": true,
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -4470,21 +4290,17 @@
}
}
},
- "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==",
+ "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",
- "engines": {
- "node": ">=0.10.0"
- }
+ "license": "MIT"
},
"node_modules/dedent": {
"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"
@@ -4520,7 +4336,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"
@@ -4530,6 +4345,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",
@@ -4629,22 +4445,10 @@
"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",
"integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -4672,23 +4476,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",
@@ -4697,39 +4499,46 @@
],
"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.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "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": {
- "version": "16.4.5",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
- "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
+ "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": {
@@ -4752,6 +4561,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,17 +4616,15 @@
}
},
"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==",
- "dev": true,
+ "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": {
"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"
@@ -4816,7 +4637,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": {
@@ -4839,23 +4659,10 @@
"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.17.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
- "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "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": {
@@ -4867,16 +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==",
- "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",
@@ -4895,65 +4697,69 @@
"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"
}
},
"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 +4768,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 +4805,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 +4825,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"
@@ -5096,7 +4890,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"
@@ -5113,7 +4906,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"
@@ -5244,7 +5036,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",
@@ -5264,24 +5055,10 @@
"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",
"integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true,
"engines": {
"node": ">= 0.8.0"
}
@@ -5290,7 +5067,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",
@@ -5304,72 +5080,48 @@
}
},
"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==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "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",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.3",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.10",
- "proxy-addr": "~2.0.7",
- "qs": "6.13.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
+ "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.2.0",
+ "content-disposition": "^1.0.0",
+ "content-type": "^1.0.5",
+ "cookie": "^0.7.1",
+ "cookie-signature": "^1.2.1",
+ "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",
+ "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.14.0",
+ "range-parser": "^1.2.1",
+ "router": "^2.2.0",
+ "send": "^1.1.0",
+ "serve-static": "^2.2.0",
+ "statuses": "^2.0.1",
+ "type-is": "^2.0.1",
+ "vary": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
},
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "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==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
- "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.10",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
- "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -5381,14 +5133,23 @@
"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": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
- "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz",
+ "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
"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": {
@@ -5405,126 +5166,24 @@
"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": "11.1.5",
- "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-11.1.5.tgz",
- "integrity": "sha512-KHmZDnZ1ry0pCTrX4YG5DtThHi0MH+GNI9caESnzX/nMJBrvppUHMvLx47M0WY9oAtKOMiPfZDRpxhlHg89BOA==",
+ "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": "^0.1.1",
"regexparam": "^3.0.0"
},
"engines": {
- "node": ">=8.0.0"
- },
- "peerDependenciesMeta": {
- "node-fetch": {
- "optional": true
- }
- }
- },
- "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==",
- "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/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": ">=18.11.0"
}
},
"node_modules/filelist": {
@@ -5564,7 +5223,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"
@@ -5574,41 +5232,23 @@
}
},
"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.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": "~2.0.0",
- "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/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",
@@ -5630,7 +5270,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",
@@ -5640,13 +5279,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",
@@ -5679,29 +5311,58 @@
}
},
"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.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
"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": {
- "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.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.6",
- "mime-types": "^2.1.12",
- "safe-buffer": "^5.2.1"
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "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.12"
+ "node": ">= 0.6"
}
},
"node_modules/forwarded": {
@@ -5715,43 +5376,40 @@
}
},
"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": {
"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/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,
@@ -5772,16 +5430,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"
@@ -5804,7 +5464,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"
@@ -5814,23 +5473,27 @@
"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.*"
}
},
"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.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.2",
+ "es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -5843,17 +5506,28 @@
"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"
}
},
+ "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",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
@@ -5863,15 +5537,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"
@@ -5885,7 +5559,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",
@@ -5912,7 +5585,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"
@@ -5963,12 +5635,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"
@@ -5978,7 +5650,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": {
@@ -5992,11 +5663,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"
}
@@ -6005,7 +5679,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"
@@ -6015,6 +5688,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 +5698,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 +5714,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"
@@ -6082,30 +5760,37 @@
"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",
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "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"
- }
- ],
+ "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": {
@@ -6126,24 +5811,37 @@
}
},
"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": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "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": "5",
+ "agent-base": "^7.1.2",
"debug": "4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/human-signals": {
"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"
@@ -6153,6 +5851,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"
@@ -6165,7 +5864,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",
@@ -6185,7 +5883,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"
@@ -6198,7 +5895,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"
@@ -6209,7 +5905,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",
@@ -6220,32 +5915,31 @@
"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": {
- "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 +5953,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 +5970,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"
@@ -6296,31 +5991,53 @@
"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": {
+ "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",
+ "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.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-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -6350,10 +6067,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==",
- "dev": true,
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
"license": "MIT",
"dependencies": {
"hasown": "^2.0.2"
@@ -6366,12 +6082,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 +6100,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,11 +6139,26 @@
"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",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -6434,18 +6168,23 @@
"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"
}
},
- "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 +6192,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": {
@@ -6470,20 +6209,20 @@
"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"
}
},
"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 +6280,20 @@
"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",
+ "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 +6325,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 +6341,26 @@
}
},
"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==",
- "dev": true,
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"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"
@@ -6613,20 +6369,16 @@
"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==",
- "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"
@@ -6636,14 +6388,27 @@
}
},
"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"
},
+ "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"
},
@@ -6652,13 +6417,33 @@
}
},
"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.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.3"
+ },
+ "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-bind": "^1.0.2"
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6678,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"
},
@@ -6688,7 +6473,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": {
@@ -6701,21 +6485,10 @@
"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",
"integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
- "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=8"
@@ -6725,7 +6498,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",
@@ -6739,10 +6511,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==",
- "dev": true,
+ "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"
@@ -6755,7 +6526,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",
@@ -6770,7 +6540,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",
@@ -6785,7 +6554,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",
@@ -6795,30 +6563,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",
@@ -6842,7 +6586,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",
@@ -6869,7 +6612,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",
@@ -6884,7 +6626,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",
@@ -6916,7 +6657,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"
@@ -6929,7 +6669,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",
@@ -6944,14 +6683,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",
@@ -6985,7 +6722,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",
@@ -7031,7 +6767,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"
@@ -7044,7 +6779,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",
@@ -7059,7 +6793,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": {
@@ -7092,7 +6825,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"
@@ -7105,7 +6837,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",
@@ -7122,7 +6853,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"
@@ -7135,7 +6865,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",
@@ -7150,14 +6879,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",
@@ -7175,7 +6902,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"
@@ -7185,7 +6911,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",
@@ -7208,13 +6933,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"
}
},
@@ -7222,7 +6947,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",
@@ -7236,7 +6960,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"
@@ -7249,7 +6972,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",
@@ -7264,14 +6986,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",
@@ -7287,7 +7007,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"
@@ -7300,7 +7019,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"
@@ -7310,7 +7028,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",
@@ -7326,7 +7043,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",
@@ -7341,14 +7057,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",
@@ -7369,7 +7083,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"
@@ -7382,7 +7095,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",
@@ -7397,14 +7109,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",
@@ -7419,7 +7129,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"
@@ -7437,7 +7146,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"
@@ -7447,7 +7155,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",
@@ -7468,7 +7175,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",
@@ -7482,7 +7188,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",
@@ -7515,7 +7220,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",
@@ -7549,7 +7253,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",
@@ -7581,7 +7284,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"
@@ -7594,7 +7296,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"
@@ -7604,7 +7305,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",
@@ -7620,7 +7320,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",
@@ -7635,14 +7334,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.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
+ "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"
@@ -7655,7 +7352,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",
@@ -7673,7 +7369,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",
@@ -7691,7 +7386,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"
@@ -7704,7 +7398,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"
@@ -7717,7 +7410,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",
@@ -7732,14 +7424,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",
@@ -7759,7 +7449,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": "*",
@@ -7775,7 +7464,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"
@@ -7787,18 +7475,23 @@
"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",
"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",
@@ -7812,7 +7505,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",
@@ -7862,12 +7554,51 @@
"node": ">=12.0.0"
}
},
- "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/jsdom": {
+ "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.5.0",
+ "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.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.1",
+ "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==",
+ "license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
@@ -7894,146 +7625,37 @@
"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==",
- "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==",
+ "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": "BSD-2-Clause",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
+ "license": "MIT",
+ "bin": {
+ "strip-json-comments": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "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"
- }
- },
- "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-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==",
+ "license": "MIT"
},
"node_modules/json-schema-traverse": {
"version": "1.0.0",
@@ -8053,7 +7675,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"
@@ -8099,9 +7720,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.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -8178,14 +7799,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"
}
@@ -8204,27 +7822,15 @@
"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"
}
},
- "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",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -8234,7 +7840,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": {
@@ -8285,7 +7890,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"
@@ -8322,13 +7926,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==",
- "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",
@@ -8371,28 +7968,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/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",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
@@ -8402,7 +7981,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"
@@ -8415,10 +7993,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==",
- "dev": true,
+ "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"
@@ -8438,7 +8015,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"
@@ -8480,6 +8056,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",
@@ -8493,6 +8082,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 +8111,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"
}
@@ -8536,24 +8137,12 @@
"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": {
- "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",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"braces": "^3.0.3",
@@ -8563,23 +8152,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.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": {
@@ -8587,13 +8163,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.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.52.0"
+ "mime-db": "^1.54.0"
},
"engines": {
"node": ">= 0.6"
@@ -8603,7 +8179,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"
@@ -8619,7 +8194,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"
@@ -8672,18 +8246,23 @@
"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",
"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": {
@@ -8754,9 +8333,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,38 +8349,16 @@
"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",
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true,
"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==",
- "dev": true,
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
"license": "MIT"
},
"node_modules/node-request-interceptor": {
@@ -8818,9 +8375,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.1",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.1.tgz",
+ "integrity": "sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==",
"dev": true,
"license": "MIT-0",
"engines": {
@@ -8831,7 +8388,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"
@@ -8841,7 +8397,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"
@@ -8850,17 +8405,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.20",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz",
+ "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/object-assign": {
"version": "4.1.1",
@@ -8873,9 +8423,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"
@@ -8912,15 +8462,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": {
@@ -8947,7 +8499,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"
@@ -8957,7 +8508,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"
@@ -8987,6 +8537,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",
@@ -9001,7 +8569,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"
@@ -9017,7 +8584,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"
@@ -9030,7 +8596,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"
@@ -9107,7 +8672,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"
@@ -9117,7 +8681,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",
@@ -9136,6 +8699,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"
@@ -9144,29 +8708,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": {
@@ -9183,7 +8735,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"
@@ -9193,7 +8744,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"
@@ -9210,7 +8760,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"
@@ -9220,7 +8769,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": {
@@ -9237,14 +8785,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"
@@ -9287,10 +8833,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==",
- "dev": true,
+ "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"
@@ -9388,9 +8933,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": {
@@ -9401,9 +8946,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": {
@@ -9470,32 +9015,10 @@
"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",
"integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
"license": "MIT",
"dependencies": {
"kleur": "^3.0.3",
@@ -9558,7 +9081,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",
@@ -9584,12 +9106,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"
@@ -9598,17 +9120,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",
@@ -9630,34 +9141,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",
@@ -9666,18 +9164,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": {
@@ -9721,16 +9217,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 +9290,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 +9320,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 +9345,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,21 +9357,23 @@
"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": {
"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"
@@ -9877,19 +9400,21 @@
}
},
"node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
"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"
}
@@ -9898,7 +9423,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"
@@ -9911,17 +9435,15 @@
"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"
}
},
"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==",
- "dev": true,
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz",
+ "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==",
"license": "MIT",
"engines": {
"node": ">=10"
@@ -9937,19 +9459,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 +9473,41 @@
"rimraf": "bin.js"
}
},
+ "node_modules/router": {
+ "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": {
+ "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": ">= 18"
+ }
+ },
+ "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.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": {
@@ -9983,6 +9517,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",
@@ -10004,16 +9545,59 @@
],
"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-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.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"
@@ -10026,12 +9610,26 @@
"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.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 +9639,7 @@
"ajv-keywords": "^5.1.0"
},
"engines": {
- "node": ">= 12.13.0"
+ "node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
@@ -10052,62 +9650,32 @@
"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"
}
},
"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.2.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
+ "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
"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",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "mime-types": "^3.0.1",
+ "ms": "^2.1.3",
+ "on-finished": "^2.4.1",
+ "range-parser": "^1.2.1",
+ "statuses": "^2.0.1"
},
"engines": {
- "node": ">= 0.8.0"
- }
- },
- "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==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "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==",
- "dev": true,
- "license": "MIT"
- },
- "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==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
+ "node": ">= 18"
}
},
"node_modules/serialize-javascript": {
@@ -10121,25 +9689,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.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": "0.19.0"
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "parseurl": "^1.3.3",
+ "send": "^1.2.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 +9738,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,21 +9773,10 @@
"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",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
@@ -10216,22 +9789,22 @@
"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"
}
},
"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"
@@ -10240,25 +9813,75 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/signal-exit": {
- "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,
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"license": "MIT",
"engines": {
"node": ">=8"
@@ -10268,7 +9891,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"
@@ -10278,7 +9900,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",
@@ -10350,14 +9971,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"
@@ -10376,19 +9995,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",
@@ -10397,20 +10003,16 @@
"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",
"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",
@@ -10491,7 +10093,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",
@@ -10503,16 +10104,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 +10126,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"
}
@@ -10558,7 +10166,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"
@@ -10571,7 +10178,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"
@@ -10581,7 +10187,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"
@@ -10591,7 +10196,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"
@@ -10604,7 +10208,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"
@@ -10617,7 +10220,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"
@@ -10626,6 +10228,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",
@@ -10658,13 +10267,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",
@@ -10672,26 +10274,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",
@@ -10818,9 +10400,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.39.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz",
+ "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -10837,17 +10419,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.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": {
- "@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 +10453,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 +10468,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",
@@ -10956,9 +10485,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": {
@@ -10983,7 +10512,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",
@@ -11011,18 +10539,61 @@
"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.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.86"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "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"
+ },
"node_modules/tmpl": {
"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"
@@ -11041,16 +10612,36 @@
"node": ">=0.6"
}
},
+ "node_modules/tough-cookie": {
+ "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": {
+ "tldts": "^6.1.32"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
"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": "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.2",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz",
+ "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11061,7 +10652,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.39.1",
"yargs-parser": "^21.1.1"
},
"bin": {
@@ -11097,9 +10689,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.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -11109,6 +10701,19 @@
"node": ">=10"
}
},
+ "node_modules/ts-jest/node_modules/type-fest": {
+ "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": {
+ "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",
@@ -11123,7 +10728,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"
@@ -11133,7 +10737,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"
@@ -11143,46 +10746,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.1",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
"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 +10796,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 +10818,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"
@@ -11255,89 +10860,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"
@@ -11350,20 +10898,10 @@
"dev": true,
"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==",
- "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==",
- "dev": true,
+ "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": {
@@ -11431,10 +10969,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==",
- "dev": true,
+ "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",
@@ -11452,7 +10989,7 @@
"license": "MIT",
"dependencies": {
"escalade": "^3.2.0",
- "picocolors": "^1.1.0"
+ "picocolors": "^1.1.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -11478,21 +11015,10 @@
"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",
"integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
- "dev": true,
"license": "ISC",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.12",
@@ -11513,11 +11039,23 @@
"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",
"integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
- "dev": true,
"license": "Apache-2.0",
"dependencies": {
"makeerror": "1.0.12"
@@ -11538,23 +11076,27 @@
}
},
"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==",
- "license": "BSD-2-Clause"
+ "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.96.1",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz",
- "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==",
+ "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": {
"@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",
@@ -11568,9 +11110,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"
},
@@ -11591,45 +11133,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 +11176,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==",
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"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==",
- "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 +11196,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": {
@@ -11704,9 +11231,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": {
@@ -11716,63 +11243,34 @@
"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==",
+ "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",
- "peerDependencies": {
- "ajv": "^6.9.1"
+ "engines": {
+ "node": ">= 0.6"
}
},
- "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/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==",
+ "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": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
+ "mime-db": "1.52.0"
},
"engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
+ "node": ">= 0.6"
}
},
"node_modules/whatwg-encoding": {
"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"
@@ -11781,36 +11279,34 @@
"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",
"integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"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": "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": "~0.0.3",
- "webidl-conversions": "^3.0.0"
+ "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",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
@@ -11823,34 +11319,45 @@
}
},
"node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "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.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-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-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==",
+ "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": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.2"
+ "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"
@@ -11859,37 +11366,84 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/wildcard": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
- "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
+ "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-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/window-size": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
- "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==",
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/wordwrap": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
- "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==",
+ "node_modules/which-typed-array": {
+ "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/X11",
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
+ },
"engines": {
- "node": ">=0.4.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/wildcard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
+ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/wrap-ansi": {
"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",
@@ -11907,14 +11461,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",
@@ -11925,17 +11477,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.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
+ "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
"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": {
@@ -11946,6 +11498,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",
@@ -11967,7 +11536,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"
@@ -11977,7 +11545,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": {
@@ -11994,7 +11561,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",
@@ -12013,7 +11579,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"
@@ -12023,7 +11588,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 b1e0c2b2..e6437a8c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "contentstack",
- "version": "3.22.2",
+ "version": "3.25.3",
"description": "Contentstack Javascript SDK",
"homepage": "https://www.contentstack.com/",
"author": {
@@ -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",
@@ -65,46 +65,46 @@
"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",
+ "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",
- "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",
- "cheerio": "^1.0.0",
+ "@contentstack/utils": "^1.3.20",
+ "@fetch-mock/jest": "^0.2.15",
"es6-promise": "^4.2.8",
- "fetch-mock": "^11.1.5",
- "isomorphic-fetch": "^3.0.0",
+ "fetch-mock": "^12.5.2",
"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..6c4ba11e
--- /dev/null
+++ b/sanity-report-dev11.js
@@ -0,0 +1,115 @@
+const fs = require("fs");
+const { App } = require("@slack/bolt");
+const { JSDOM } = require("jsdom");
+const dotenv = require("dotenv");
+const path = require("path");
+
+dotenv.config();
+
+const user1 = process.env.USER1;
+const user2 = process.env.USER2;
+const user3 = process.env.USER3;
+const user4 = process.env.USER4;
+
+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 =
+ 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;
+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 (summary.failedTests > 0) {
+ tagUsers = `<@${user1}> <@${user2}> <@${user3}> <@${user4}>`;
+}
+
+const slackMessage = {
+ text: `Dev11, SDK-CDA Sanity
+*Result:* ${resultMessage}. ${summary.duration}s
+*Failed Tests:* ${summary.failedTests + summary.skippedTests}
+<${reportUrl}|View Report>
+${tagUsers}`,
+};
+
+const app = new App({
+ token: process.env.SLACK_BOT_TOKEN,
+ signingSecret: process.env.SLACK_SIGNING_SECRET,
+});
+
+const sendSlackMessage = async () => {
+ try {
+ const result = await app.client.chat.postMessage({
+ token: process.env.SLACK_BOT_TOKEN,
+ channel: process.env.SLACK_CHANNEL2,
+ text: slackMessage.text, // Ensure this is the full object
+ });
+
+ if (summary.failedTests > 0) {
+ await sendFailureDetails(result.ts); // Pass the correct thread timestamp
+ }
+ } catch (error) {
+ console.error("Error sending Slack message:", error);
+ }
+};
+
+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_CHANNEL2,
+ text: failureDetails,
+ thread_ts: threadTs,
+ });
+ } catch (error) {
+ console.error("Error sending failure details:", error);
+ }
+ }
+};
+
+sendSlackMessage(slackMessage.text);
diff --git a/sanity-report.js b/sanity-report.js
index 6189bf9a..9a664f4d 100644
--- a/sanity-report.js
+++ b/sanity-report.js
@@ -1,45 +1,56 @@
const fs = require('fs');
-const Slack = require('@slack/bolt')
+const { App } = require('@slack/bolt');
+const { JSDOM } = require("jsdom");
const dotenv = require('dotenv')
+const path = require("path");
+
dotenv.config()
-const cheerio = require('cheerio');
-const tapHtmlContent = fs.readFileSync('./tap-html.html', 'utf8');
-const report = `./tap-html.html`
-const $ = cheerio.load(tapHtmlContent);
-
-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 milliseconds = parseInt(totalTime.replace(/\D/g, ''), 10);
-const totalSeconds = Math.floor(milliseconds / 1000);
-const durationInMinutes = Math.floor(totalSeconds / 60);
-const durationInSeconds = totalSeconds % 60;
-
-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`);
+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 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,
+};
+
+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 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..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,8 +60,30 @@ class Contentstack {
return;
}
}
+ };
+
+ let _entry = { ...entry };
+ const keys = key.split(".");
+ const unsafeKeys = new Set(["__proto__", "constructor", "prototype"]);
+
+ for (const k of keys) {
+ // 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 && typeof block === "object" && Object.prototype.hasOwnProperty.call(block, k)) {
+ _entry = block[k];
+ }
+ }
+ }
}
- x(entry[key].children);
+ if (_entry.children) x(_entry.children);
if (correspondingAsset) {
correspondingAsset['href'] = item.url;
}
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/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) {
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/src/core/stack.js b/src/core/stack.js
index 4b6036fd..b9206fd3 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'];
}
}
@@ -588,8 +596,28 @@ 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) {
+ const value = params[key];
+ if (params.hasOwnProperty(key)) {
+ 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];
+ }
+ }
+ }
this.requestParams = {
method: 'POST',
headers: Utils.mergeDeep({}, this.headers),
@@ -622,7 +650,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('&');
}
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/asset/find-result-wrapper.js b/test/asset/find-result-wrapper.js
index bfcf8ad1..5c03e016 100755
--- a/test/asset/find-result-wrapper.js
+++ b/test/asset/find-result-wrapper.js
@@ -1,787 +1,1114 @@
-'use strict';
+"use strict";
/*
* 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();
+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("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 allAssetsInRequestedLocale = assets[0].every((asset) => {
+ return _in.indexOf(asset["publish_details"]["locale"]) !== -1;
});
-});
-
-
-// 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();
+ expect(allAssetsInRequestedLocale).toBe(true);
+ } else {
+ // Skip this test if no assets are returned
+ console.warn("No assets returned to verify locale");
+ }
+ });
+
+ 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");
+ }
+ });
+ });
+
+ 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 allAssetsInAllowedLocales = assets[0].every((asset) => {
+ return _in.indexOf(asset["publish_details"]["locale"]) !== -1;
});
-});
-
-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();
+ expect(allAssetsInAllowedLocales).toBe(true);
+ } else {
+ // Skip this test if no assets are returned
+ console.warn("No assets returned to verify locales with fallback");
+ }
+ });
+
+ 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";
});
-});
-
-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();
+ 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");
+ }
+ });
+ });
+
+ 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 allAssetsSorted = assets[0].every((asset) => {
+ const isSorted = asset[field] <= prev;
+ prev = asset[field];
+ return isSorted;
});
-});
-
-
-
-// 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)
+ expect(allAssetsSorted).toBe(true);
+ } else {
+ console.warn("No assets returned to verify sorting");
+ }
+ });
+ });
+
+ 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()
- .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();
+ .find();
+ expect(assets[0][0].hasOwnProperty("dimension")).toBeTruthy();
+ } catch (err) {
+ console.error("Error:", err);
+ fail(".addParam()");
+ }
+ });
+
+ describe("comparison", () => {
+ describe(".lessThan()", () => {
+ const field = "file_size";
+ const value = 5122;
+ 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) {
+ const allAssetsMatchCondition = assets[0].every(
+ (asset) => asset[field] < value
+ );
+ expect(allAssetsMatchCondition).toBe(true);
+ } else {
+ console.warn("No assets returned to verify lessThan condition");
+ }
+ });
+ });
+
+ 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) {
+ const allAssetsMatchCondition = assets[0].every(
+ (asset) => asset[field] <= value
+ );
+ expect(allAssetsMatchCondition).toBe(true);
+ } else {
+ console.warn(
+ "No assets returned to verify lessThanOrEqualTo condition"
+ );
+ }
+ });
+ });
+
+ 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()");
+ }
+ });
+
+ describe(".notEqualTo()", () => {
+ const field = "file_size";
+ const value = 5122;
+ 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) {
+ const allAssetsMatchCondition = assets[0].every(
+ (asset) => asset[field] !== value
+ );
+ expect(allAssetsMatchCondition).toBe(true);
+ } else {
+ console.warn("No assets returned to verify notEqualTo condition");
+ }
+ });
+ });
+
+ 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);
+ });
+
+ 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");
+ }
+ });
+ });
+
+ 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('.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("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('.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();
+ test("should return exactly 5 assets matching the condition", async () => {
+ expect(assets[0].length).toBe(5);
});
-});
-
-// 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("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");
+ }
});
-});
+ });
-test('Non reference .tags() ', function(assert) {
- var Query = Stack.Assets().Query(),
- tags = ["asset3"];
+ describe("when comparing with true", () => {
+ let assets;
- 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();
+ beforeAll(async () => {
+ const Query = Stack.Assets().Query();
+ assets = await Query.equalTo("is_dir", true).toJSON().find();
});
-});
-// 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
- .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();
- });
-});
-
-// 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();
- });
-});
-
-
-
-// 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();
- });
-});
-
-// 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();
- });
-});
-
-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();
+ 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", () => {
+ describe(".containedIn()", () => {
+ const _in = ["image1", "image2"];
+ 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 allAssetsMatchCondition = assets[0].every((asset) => {
+ return _in.indexOf(asset["title"]) !== -1;
+ });
+ expect(allAssetsMatchCondition).toBe(true);
+ } else {
+ console.warn("No assets returned to verify containedIn condition");
+ }
+ });
+
+ 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");
+ }
+ });
+ });
+
+ describe(".notContainedIn()", () => {
+ const _in = ["image1", "image2"];
+ 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();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 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");
+ }
+ });
+
+ 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(".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 allAssetsMatchCondition = assets[0].every(
+ (asset) => asset.title === title && asset.is_dir === isDir
+ );
+ expect(allAssetsMatchCondition).toBe(true);
+ }
+ });
+ });
+
+ 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 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");
+ }
+ });
+
+ 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", () => {
+ describe(".tags() - empty results", () => {
+ let assets;
+ const tags = ["asset3"];
+
+ 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);
+ });
+ });
+
+ describe(".tags() - with results", () => {
+ let assets;
+ const field = "tags";
+ const tags = ["asset1", "asset2"];
+
+ 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 allAssetsHaveMatchingTags = assets[0].every((asset) => {
+ return Utils.arrayPresentInArray(tags, asset[field]);
+ });
+ expect(allAssetsHaveMatchingTags).toBe(true);
+ } else {
+ console.warn("No assets returned to verify 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", () => {
+ 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();
+ });
+
+ 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");
+ }
+ });
+ });
+
+ describe(".regex()", () => {
+ let assets;
+ const field = "title";
+ const regex = {
+ pattern: "^image",
+ options: "i",
+ };
+ const regexpObj = new RegExp(regex.pattern, regex.options);
+
+ 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", () => {
+ 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();
+ });
+
+ 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", () => {
+ 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();
+ });
+
+ 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");
+ }
+ });
+ });
+
+ 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();
+ });
+
+ 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");
+ }
+ });
+ });
+
+ 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();
+ });
+
+ 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");
+ }
+ });
+ });
+ });
});
-
-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();
- });
-});
\ No newline at end of file
diff --git a/test/asset/find.js b/test/asset/find.js
index 3acca3e9..ea2aee3c 100755
--- a/test/asset/find.js
+++ b/test/asset/find.js
@@ -1,817 +1,582 @@
-'use strict';
+"use strict";
/*
* 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);
-});
+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"];
+
+ const assets = await Stack.Assets()
+ .Query()
+ .language("ja-jp")
+ .toJSON()
+ .find();
+ expect(assets[0].length).toBeTruthy();
+ expect(assets[1]).toBeFalsy();
-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();
+ 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);
+ }
+ });
-/*!
- * SORTING
- * !*/
-test('.ascending()', function(assert) {
- var Query = Stack.Assets().Query(),
- field = 'updated_at';
+ test("default .find() fallback", async () => {
+ const _in = ["ja-jp", "en-us"];
- Query
- .ascending(field)
+ const assets = await Stack.Assets()
+ .Query()
+ .language("ja-jp")
+ .includeFallback()
.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();
- });
-});
+ .find();
-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();
+ 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);
+ }
+ });
+ });
+
+ 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 () => {
+ const Query = Stack.Assets().Query();
+ 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);
+ }
+ });
-// 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();
+ test(".descending()", async () => {
+ const Query = Stack.Assets().Query();
+ 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 () => {
+ const Query = Stack.Assets().Query();
-/*!
- * COMPARISION
- * !*/
-test('.lessThan()', function(assert) {
- var Query = Stack.Assets().Query(),
- field = 'file_size',
- value = 5122;
- Query
- .lessThan('file_size', value)
+ const assets = await Query.addParam("include_dimension", "true")
.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();
+ .find();
+ expect(assets[0][0].hasOwnProperty("dimension")).toBeTruthy();
+ });
+ });
+
+ describe("Comparison", () => {
+ test(".lessThan()", async () => {
+ const Query = Stack.Assets().Query();
+ const field = "file_size";
+ const value = 5122;
+
+ 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 () => {
+ const Query = Stack.Assets().Query();
+ const field = "updated_at";
-test('.lessThanOrEqualTo()', function(assert) {
- var Query = Stack.Assets().Query(),
- field = 'updated_at';
- Query
- .lessThanOrEqualTo('file_size', 5122)
+ const assets = await 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);
+ .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()', function(assert) {
- var Query = Stack.Assets().Query(),
- field = 'file_size',
- value = 5122;
+ test(".greaterThan()", async () => {
+ const Query = Stack.Assets().Query();
+ const field = "file_size";
+ const value = 5122;
- Query
- .greaterThan('file_size', value)
+ const assets = await 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();
- });
-});
+ .find();
-test('.greaterThanOrEqualTo()', function(assert) {
- var Query = Stack.Assets().Query(),
- field = 'file_size',
- value = 5122;
+ expect(assets[0].length).toBeTruthy();
- 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();
+ 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('.notEqualTo()', function(assert) {
- var Query = Stack.Assets().Query(),
- field = 'file_size',
- value = 5122;
+ test(".greaterThanOrEqualTo()", async () => {
+ const Query = Stack.Assets().Query();
+ const field = "file_size";
+ const value = 5122;
- Query
- .notEqualTo('file_size', value)
+ const assets = await Query.greaterThanOrEqualTo("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();
- });
-});
+ .find();
-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();
- });
-});
+ 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('.equalTo() compare boolean value (true)', function(assert) {
- var Query = Stack.Assets().Query();
+ test(".notEqualTo()", async () => {
+ const Query = Stack.Assets().Query();
+ const field = "file_size";
+ const value = 5122;
- Query
- .language('en-us')
- .equalTo('is_dir', false)
+ const assets = await Query.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, 5, ' five asset present in the resultset');
- assert.end();
- }, function error(err) {
- console.error("error :", err);
- assert.fail(".where()");
- assert.end();
- });
-});
+ .find();
-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();
+ 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);
+ }
+ });
-/*!
- * Array/Subset
- * !*/
+ test(".where()", async () => {
+ const Query = Stack.Assets().Query();
-test('.containedIn()', function(assert) {
- var Query = Stack.Assets().Query(),
- _in = ["image1", "image2"],
- field = 'updated_at';
+ const assets = await Query.where("title", "image1").toJSON().find();
- 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();
- });
-});
+ expect(assets[0].length).toBeTruthy();
+ expect(assets[0].length).toBe(1);
+ });
-test('.notContainedIn()', function(assert) {
- var Query = Stack.Assets().Query(),
- _in = ["image1", "image2"];
+ test(".equalTo() compare boolean value (true)", async () => {
+ const Query = Stack.Assets().Query();
- Query
- .notContainedIn('title', _in)
+ const assets = await 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.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();
- });
-});
+ .find();
+ expect(assets[0].length).toBeTruthy();
+ expect(assets[0].length).toBe(5);
+ });
-/*!
- *Element(exists)
- * !*/
+ test(".equalTo() compare boolean value (false)", async () => {
+ const Query = Stack.Assets().Query();
-test('.exists()', function(assert) {
- var Query = Stack.Assets().Query(),
- queryField = "is_dir",
- field = 'updated_at';
+ const assets = await Query.equalTo("is_dir", true).toJSON().find();
- 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();
- });
-});
+ expect(assets[0].length).toBeFalsy();
+ expect(assets[0].length).toBe(0);
+ });
+ });
-test('.notExists()', function(assert) {
- var Query = Stack.Assets().Query(),
- queryField = "is_dir",
- field = 'updated_at';
+ describe("Array/Subset Tests", () => {
+ test(".containedIn()", async () => {
+ const Query = Stack.Assets().Query();
+ const _in = ["image1", "image2"];
+ const 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();
+ 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 () => {
+ const Query = Stack.Assets().Query();
+ const _in = ["image1", "image2"];
-// Pagination
-test('.skip()', function(assert) {
- var Query = Stack.Assets().Query(),
- field = 'updated_at';
+ const assets = await Query.notContainedIn("title", _in).toJSON().find();
- 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();
- });
-});
+ expect(assets[0].length).toBeTruthy();
+ });
+ });
-test('.limit()', function(assert) {
- var Query = Stack.Assets().Query(),
- field = 'updated_at';
+ describe("Element Existence Tests", () => {
+ test(".exists()", async () => {
+ const Query = Stack.Assets().Query();
+ const queryField = "is_dir";
+ const 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();
- });
-});
+ const assets = await Query.exists(queryField).toJSON().find();
-test('.count()', function(assert) {
- var Query = Stack.Assets().Query();
+ expect(assets[0].length).toBeTruthy();
- 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();
+ 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 () => {
+ const Query = Stack.Assets().Query();
+ const queryField = "is_dir";
+ const field = "updated_at";
-// 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();
+ const assets = await Query.notExists(queryField).toJSON().find();
- 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();
+ 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 () => {
+ const Query = Stack.Assets().Query();
+ 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 () => {
+ const Query = Stack.Assets().Query();
+ 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('.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();
+ test(".count()", async () => {
+ const 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();
- });
-});
+ const count = await Query.count().toJSON().find();
+ expect(count).toBeTruthy();
+ });
+ });
-// Custom query
-test('.query() - Raw query', function(assert) {
- var Query = Stack.Assets().Query();
+ 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();
- 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();
+ 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);
+ const Query = Stack.Assets().Query();
-test('.tags()', function(assert) {
- var Query = Stack.Assets().Query(),
- tags = ["asset3"];
+ const assets = await Query.and(Query1, Query2).toJSON().find();
- 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();
+ 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 () => {
+ const Query = Stack.Assets().Query();
-// search
-test('.search()', function(assert) {
- var Query = Stack.Assets().Query();
- Query
+ const assets = await Query.query({
+ $or: [{ title: "image2" }, { is_dir: "true" }],
+ })
.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();
- });
-});
+ .find();
-// 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();
+ 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 () => {
+ const Query = Stack.Assets().Query();
+ const tags = ["asset3"];
-// includeCount
-test('.includeCount()', function(assert) {
- var Query = Stack.Assets().Query();
+ const assets = await Query.tags(tags).toJSON().find();
- 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.length >= 1).toBeTruthy();
+ if (assets && assets.length && assets[0].length) {
+ expect(assets[0].length).toBe(0);
+ }
+ });
-// only
-test('.only() - Single String Parameter', function(assert) {
- var Query = Stack.Assets().Query();
+ test(".tags() - with results", async () => {
+ const Query = Stack.Assets().Query();
+ const field = "tags";
+ const tags = ["asset1", "asset2"];
- 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();
- });
-});
+ const assets = await Query.tags(tags).toJSON().find();
-test('.only() - Multiple String Parameter', function(assert) {
- var Query = Stack.Assets().Query();
+ expect(assets.length >= 1).toBeTruthy();
- 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();
+ if (assets && assets.length && assets[0].length) {
+ const _assets = assets[0].every((asset) => {
+ return Utils.arrayPresentInArray(tags, asset[field]);
});
-});
-
-test('.only() - Array Parameter', function(assert) {
- var Query = Stack.Assets().Query();
-
- Query
- .only(['title', 'filename'])
+ expect(_assets).toBe(true);
+ }
+ });
+ });
+
+ describe("Search Tests", () => {
+ test(".search()", async () => {
+ const Query = Stack.Assets().Query();
+
+ const assets = await Query.toJSON().search("image1").find();
+ expect(assets[0].length).toBeTruthy();
+ });
+
+ 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);
+
+ const assets = await Query.regex(field, regex.pattern, regex.options)
.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();
- });
-});
\ No newline at end of file
+ .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 () => {
+ const Query = Stack.Assets().Query();
+
+ 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 () => {
+ const Query = Stack.Assets().Query();
+
+ 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 () => {
+ const Query = Stack.Assets().Query();
+
+ 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 () => {
+ const Query = Stack.Assets().Query();
+
+ 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();
+ });
+ });
+});
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..6fe9b0d1 100755
--- a/test/asset/spread.js
+++ b/test/asset/spread.js
@@ -1,95 +1,63 @@
/**
* Created by Aamod Pisat on 09-06-2017.
*/
-'use strict';
+"use strict";
/*
* 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
- .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();
- });
-});
+ const result = await Query.limit(1).toJSON().find();
-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();
- });
-});
+ 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', 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();
- });
-});
\ No newline at end of file
+ test("with assets and count argument", async () => {
+ const Query = Stack.Assets().Query();
+ 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);
+ }
+ });
+});
diff --git a/test/config.js b/test/config.js
index 69c45db8..0cea9c0c 100755
--- a/test/config.js
+++ b/test/config.js
@@ -1,5 +1,15 @@
'use strict';
-require('dotenv').config()
+require('dotenv').config();
+
+const requiredVars = ['HOST', 'API_KEY', 'DELIVERY_TOKEN', 'ENVIRONMENT'];
+const missingVars = requiredVars.filter((key) => !process.env[key]);
+
+if (missingVars.length > 0) {
+ const errorMessage = `\x1b[31mError: Missing environment variables - ${missingVars.join(', ')}`;
+ const error = new Error(errorMessage);
+ error.stack = error.message;
+ throw error;
+}
module.exports = {
stack: { 'api_key': process.env.API_KEY, 'delivery_token': process.env.DELIVERY_TOKEN, 'environment': process.env.ENVIRONMENT, },
diff --git a/test/entry/find-result-wrapper.js b/test/entry/find-result-wrapper.js
index c6b553f2..a62e73a1 100755
--- a/test/entry/find-result-wrapper.js
+++ b/test/entry/find-result-wrapper.js
@@ -1,1130 +1,1269 @@
-'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);
+ });
+ });
+
+ describe("default .find()", () => {
+ let entries;
+ const field = "updated_at";
+
+ // 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) {
+ prev = entry[field];
+ return entry.updated_at <= prev;
});
-});
-
-/*!
- * 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();
+ expect(_entries).toBe(true);
+ } else {
+ console.warn("Not enough entries returned to verify default sorting");
+ }
+ });
+
+ 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", () => {
+ test(".ascending()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const field = "updated_at";
+
+ const entries = await Query.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].every(function (entry) {
+ prev = entry[field];
+ return entry[field] >= prev;
});
-});
+ expect(_entries).toBe(true);
+ }
+ });
-test('.descending()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query(),
- field = 'created_at';
+ test(".descending()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const 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();
- });
-});
+ const entries = await Query.descending(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;
});
-});
-
-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();
+ expect(_entries).toBe(true);
+ }
+ });
+ });
+
+ describe("comparison", () => {
+ test(".lessThan()", async () => {
+ const Query = Stack.ContentType(
+ contentTypes.numbers_content_type
+ ).Query();
+ const value = 11;
+ const field = "updated_at";
+
+ const entries = await Query.lessThan("num_field", value).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);
+ }
+ });
+
+ test(".lessThanOrEqualTo()", async () => {
+ const Query = Stack.ContentType(
+ contentTypes.numbers_content_type
+ ).Query();
+ const field = "updated_at";
+ const value = 11;
+
+ const entries = await Query.lessThanOrEqualTo("num_field", value)
+ .toJSON()
+ .find();
-test('.greaterThan()', function(assert) {
- var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(),
- field = 'num_field',
- value = 11;
+ expect(entries[0].length).toBeTruthy();
- Query
- .greaterThan('num_field', value)
+ 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(".greaterThan()", async () => {
+ const Query = Stack.ContentType(
+ contentTypes.numbers_content_type
+ ).Query();
+ const field = "num_field";
+ const value = 11;
+
+ const entries = await 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();
- });
-});
+ .find();
-test('.greaterThanOrEqualTo()', function(assert) {
- var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(),
- field = 'num_field',
- value = 11;
+ expect(entries[0].length).toBeTruthy();
- 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();
+ 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;
});
-});
-
-test('.notEqualTo()', function(assert) {
- var Query = Stack.ContentType(contentTypes.numbers_content_type).Query(),
- field = 'num_field',
- value = 6;
-
- Query
- .notEqualTo('num_field', value)
+ expect(_entries).toBe(true);
+ }
+ });
+
+ test(".greaterThanOrEqualTo()", async () => {
+ const Query = Stack.ContentType(
+ contentTypes.numbers_content_type
+ ).Query();
+ const field = "num_field";
+ const value = 11;
+
+ const entries = await 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(".notEqualTo()");
- assert.end();
- });
-});
+ .find();
-/*!
- * Array/Subset
- * !*/
+ expect(entries[0].length).toBeTruthy();
-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].every(function (entry) {
+ const flag = entry[field] >= value;
+ prev = entry[field];
+ return flag;
});
-});
-
-test('.notContainedIn()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query(),
- _in = ["sourceddd1", "sourceddddd2"];
-
- Query
- .notContainedIn('title', _in)
+ expect(_entries).toBe(true);
+ }
+ });
+
+ test(".notEqualTo()", async () => {
+ const Query = Stack.ContentType(
+ contentTypes.numbers_content_type
+ ).Query();
+ const field = "num_field";
+ const value = 6;
+
+ const entries = await 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, 'No Entry present in the resultset');
- assert.end();
- }, function error(err) {
- console.error("error :", err);
- assert.fail(".notContainedIn()");
- assert.end();
- });
-});
-
-
-/*!
- *Element(exists)
- * !*/
+ .find();
-test('.exists()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query(),
- queryField = "boolean",
- field = 'updated_at';
+ expect(entries[0].length).toBeTruthy();
- 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;
});
-});
-
-test('.notExists()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query(),
- queryField = "isspecial",
- field = 'updated_at';
+ expect(_entries).toBe(true);
+ }
+ });
+ });
- 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();
- });
-});
+ describe("array/subset", () => {
+ test(".containedIn()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const _in = ["source1", "source2"];
+ const field = "updated_at";
+ const entries = await Query.containedIn("title", _in).toJSON().find();
-// Pagination
-test('.skip()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query(),
- field = 'updated_at';
+ expect(entries[0].length).toBeTruthy();
- 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();
+ if (entries && entries.length && entries[0].length) {
+ const _entries = entries[0].every(function (entry) {
+ return _in.indexOf(entry["title"]) != -1;
});
-});
+ expect(_entries).toBe(true);
+ }
+ });
-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();
- });
-});
+ test(".notContainedIn()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const _in = ["sourceddd1", "sourceddddd2"];
-test('.count()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ const entries = await Query.notContainedIn("title", _in).toJSON().find();
- 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();
- });
-});
+ expect(entries[0].length).toBeTruthy();
+ });
+ });
+ describe("exists", () => {
+ test(".exists()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const queryField = "boolean";
+ const field = "updated_at";
+ const entries = await Query.exists(queryField).toJSON().find();
-// 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();
+ expect(entries[0].length).toBeTruthy();
- 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();
+ 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('.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();
+ test(".notExists()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const queryField = "isspecial";
+ const field = "updated_at";
- 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();
- });
-});
+ const entries = await Query.notExists(queryField).toJSON().find();
-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();
+ expect("entries" in entries).toBeTruthy();
- 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);
+ }
+ });
+ });
+ describe("pagination", () => {
+ test(".skip()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const field = "updated_at";
-// Custom query
-test('.query() - Raw query', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ const allEntries = await Query.toJSON().find();
- Query
- .query({ "$or": [{ "title": "source1" }, { "boolean": "true" }] })
+ const entries = await 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.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();
+ .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);
+ }
+ });
+ test(".limit()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const field = "updated_at";
-// tags
-test('.tags()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query(),
- field = 'tags',
- tags = ["tag1", "tag2"];
+ const allEntries = await Query.toJSON().find();
- Query
- .tags(tags)
+ const entries = await 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.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();
- });
-});
+ .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;
});
-});
-
-// 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();
- });
-});
+ expect(_entries).toBe(true);
+ }
+ });
+
+ test(".count()", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+
+ const entries = await Query.count().toJSON().find();
+
+ expect(entries[0]).toBeTruthy();
+ });
+ });
+
+ describe("logical", () => {
+ 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();
+
+ 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 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");
+ }
+ });
+ 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('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');
+ test("should include entries with boolean field set to true", async () => {
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 hasEntryWithBoolean = entries[0].some(
+ (entry) => entry.boolean === true
+ );
+ expect(hasEntryWithBoolean).toBe(true);
+ } else {
+ console.warn("No entries returned to verify second condition");
}
- 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(".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();
+
+ 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) {
- var _entries = entries[0].every(function(entry) {
- return (_in.indexOf(entry['publish_details']['locale']) != -1);
- });
- assert.equal(_entries, true, "Publish content fallback");
+ 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");
}
- 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();
- });
-});
+ });
-test('.includeReference() - Array', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ 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");
+ }
+ });
- 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();
- });
-});
+ 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");
+ }
+ });
+ });
+
+ describe(".query() - Raw query", () => {
+ let entries;
+
+ 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 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");
+ }
+ });
-// includeCount
-test('.includeCount()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ 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"
+ );
+ }
+ });
- 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();
- });
-});
+ 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"
+ );
+ }
+ });
+ });
+ });
-// includeSchema
-test('.includeSchema()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ describe("custom query", () => {
+ test(".query() - Raw query with basic OR condition", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
- Query
- .includeSchema()
+ const entries = await 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');
- assert.ok(entries[1].length, 'Schema present in the resultset');
- assert.end();
- }, function error(err) {
- console.error("Error :", err);
- assert.fail(".includeSchema()");
- assert.end();
- });
-});
+ .find();
+ expect(entries[0].length).toBeTruthy();
-// 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();
+ if (entries && entries.length && entries[0].length) {
+ const _entries = entries[0].every(function (entry) {
+ return entry.title === "source1" || entry.boolean === true;
});
-});
+ expect(_entries).toBeTruthy();
+ }
+ });
-// includeContentType
-test('.includeContentType()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ test(".query() - Raw query with AND condition", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
- Query
- .includeContentType()
+ const entries = await Query.query({
+ $and: [{ title: "source1" }, { boolean: true }],
+ })
.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();
- });
-});
+ .find();
-// includeCount && includeContentType
-test('.includeCount() and .includeContentType()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ expect(entries[0].length).toBeTruthy();
- 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();
- });
-});
+ const allMatchBothConditions = entries[0].every(
+ (entry) => entry.title === "source1" && entry.boolean === true
+ );
+ expect(allMatchBothConditions).toBeTruthy();
+ });
-// includeSchema && includeContentType
-test('.includeSchema() and .includeContentType()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ test(".query() - Raw query with nested conditions", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
- Query
- .includeSchema()
- .includeContentType()
+ const entries = await Query.query({
+ $and: [
+ { title: "source1" },
+ { $or: [{ boolean: true }, { url: { $exists: true } }] },
+ ],
+ })
.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();
- });
-});
+ .find();
-// 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(entries[0].length).toBeTruthy();
+ const allMatchConditions = entries[0].every(
+ (entry) =>
+ entry.title === "source1" &&
+ (entry.boolean === true || entry.url !== undefined)
+ );
+ expect(allMatchConditions).toBeTruthy();
+ });
+ });
-// only
-test('.only() - Single String Parameter', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ describe("tags", () => {
+ test(".tags() - Multiple tags filter", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const field = "tags";
+ const tags = ["tag1", "tag2"];
- 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();
- });
-});
+ const entries = await Query.tags(tags).toJSON().find();
-test('.only() - Multiple String Parameter', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ expect(entries.length).toBeGreaterThanOrEqual(1);
- 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();
+ if (entries && entries.length && entries[0].length) {
+ const _entries = entries[0].every(function (entry) {
+ return Utils.arrayPresentInArray(tags, entry[field]);
});
-});
-
-test('.only() - Array Parameter', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
-
- Query
- .only(['title', 'url'])
+ 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() - Exact 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 === "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() - Basic pattern match", 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()
- .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')
+ .find();
+
+ expect(entries.length).toBeGreaterThanOrEqual(1);
+
+ 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()
- .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'])
+ .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()
- .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')
+ .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: with specific locale", async () => {
+ const locale = "ja-jp";
+
+ const entries = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language(locale)
.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')
+ .find();
+
+ expect(entries[0].length).toBeTruthy();
+
+ 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: with fallback enabled for partially localized content", async () => {
+ const primaryLocale = "ja-jp";
+ const fallbackLocale = "en-us";
+
+ const entries = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language(primaryLocale)
+ .includeFallback()
.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();
- });
-});
+ .find();
-test('.except() - Array of String Parameter', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ expect(entries[0].length).toBeTruthy();
- 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();
+ if (entries && entries.length && entries[0].length) {
+ const _entries = entries[0].every(function (entry) {
+ return [primaryLocale, fallbackLocale].includes(
+ entry.publish_details.locale
+ );
});
-});
-
-test('.except() - For the reference - String', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
-
- Query
- .includeReference('reference')
- .only('BASE', ['reference'])
- .except('reference', 'title')
+ 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()
- .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);
- });
- 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();
- });
-});
-
-test('.except() - For the reference - Array', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ .find();
- Query
- .includeReference('reference')
- .only('BASE', ['reference'])
- .except('reference', ['title'])
+ const entriesWithFallback = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language(locale)
+ .includeFallback()
.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);
+ .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", () => {
+ describe(".includeReference() - String", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeReference("reference").toJSON().find();
+ });
+
+ 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(allEntriesHaveReference).toBe(true);
+ });
+ });
+
+ describe(".includeReference() - Array", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeReference(["reference", "other_reference"])
+ .toJSON()
+ .find();
+ });
+
+ 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"
+ );
+ 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(allEntriesHaveSecondReference).toBe(true);
+ });
+ });
+ });
+
+ describe("include count and schema", () => {
+ describe(".includeCount()", () => {
+ let entries;
+
+ 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();
+ });
+ });
+
+ describe(".includeSchema()", () => {
+ let entries;
+
+ 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();
+ });
+ });
+
+ describe(".includeCount() and .includeSchema()", () => {
+ let entries;
+
+ 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();
+ });
+ });
+ });
+
+ describe("include contenttypes", () => {
+ describe(".includeContentType()", () => {
+ let entries;
+
+ 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);
+ });
+ });
+
+ describe(".includeCount() and .includeContentType()", () => {
+ let entries;
+
+ 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();
+ });
+ });
+
+ describe(".includeSchema() and .includeContentType()", () => {
+ let entries;
+
+ 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);
+ });
+ });
+
+ describe(".includeCount(), .includeSchema() and .includeContentType()", () => {
+ let entries;
+
+ 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();
+ });
+ });
+ });
+
+ describe("field projections", () => {
+ describe(".only() - Single String Parameter", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.only("title").toJSON().find();
+ });
+
+ 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(correctFieldsOnly).toBeTruthy();
+ });
+ });
+
+ describe(".only() - Multiple String Parameter", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.only("BASE", "title").toJSON().find();
+ });
+
+ 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(correctFieldsOnly).toBeTruthy();
+ });
+ });
+
+ describe(".only() - Array Parameter", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.only(["title", "url"]).toJSON().find();
+ });
+
+ 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(correctFieldsOnly).toBeTruthy();
+ });
+ });
+
+ describe(".except() - Single String Parameter", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.except("title").toJSON().find();
+ });
+
+ 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();
+ });
+ });
+
+ describe(".except() - Multiple String Parameter", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.except("BASE", "title").toJSON().find();
+ });
+
+ 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();
+ });
+ });
+
+ describe(".except() - Array of String Parameter", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.except(["title", "file"]).toJSON().find();
+ });
+
+ 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();
+ });
+ });
+
+ describe(".except() - For the reference - String", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeReference("reference")
+ .only("BASE", ["reference"])
+ .except("reference", "title")
+ .toJSON()
+ .find();
+ });
+
+ test("should return entries", () => {
+ expect(entries[0].length).toBeTruthy();
+ });
+
+ 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"
+ ) {
+ hasCorrectReferenceFormat = true;
+ hasCorrectReferenceFormat = 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();
+ }
+
+ return (
+ hasCorrectReferenceFormat &&
+ entry &&
+ Object.keys(entry).length === 2 &&
+ "reference" in entry &&
+ "uid" in entry
+ );
});
-});
\ No newline at end of file
+
+ expect(correctFormat).toBeTruthy();
+ });
+ });
+ });
+});
diff --git a/test/entry/find.js b/test/entry/find.js
index 7c4c2c57..07276a30 100755
--- a/test/entry/find.js
+++ b/test/entry/find.js
@@ -1,1676 +1,1414 @@
-'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();
-});
+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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.toJSON().find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.ascending(field).toJSON().find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.descending(field).toJSON().find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.addParam("include_count", "true").toJSON().find();
+ });
+
+ 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 () => {
+ 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();
+ });
+
+ test("All entries should have num_field less than specified value", () => {
+ if (entries && entries.length && entries[0].length) {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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);
+ }
+ });
+ });
+
+ describe(".notEqualTo()", () => {
+ let entries;
+ const field = "num_field";
+ const value = 6;
+
+ beforeAll(async () => {
+ 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", () => {
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.where("boolean", true).toJSON().find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.where("boolean", false).toJSON().find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.where("title", "").toJSON().find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.tags(tags).toJSON().find();
+ });
+
+ 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) {
+ 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");
+ }
+ });
+ });
+ });
+
+ describe("Array/Subset Tests", () => {
+ describe(".containedIn()", () => {
+ let entries;
+ const _in = ["source1", "source2"];
+ const field = "title";
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.containedIn("title", _in).toJSON().find();
+ });
+
+ 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);
+ }
+ });
+ });
-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();
+ describe(".notContainedIn()", () => {
+ let entries;
+ const _in = ["source1", "source2"];
+ const field = "title";
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.notContainedIn("title", _in).toJSON().find();
+ });
+
+ 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";
+ 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);
+ }
+ });
+
+ test(".notExists() should return entries without the specified field", async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ const queryField = "isspecial";
+ const field = "updated_at";
+ 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);
+ }
+ });
+ });
+
+ describe("Pagination Tests", () => {
+ describe(".skip()", () => {
+ let allEntries;
+ let skippedEntries;
+ const field = "updated_at";
+
+ beforeAll(async () => {
+ 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();
+ });
+
+ 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 () => {
+ 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();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ count = await Query.count().toJSON().find();
+ });
+
+ test("Entries present in the resultset", () => {
+ expect(count).toBeTruthy();
+ });
+ });
+ });
+
+ describe("Logical Operations", () => {
+ describe(".or() - Query Objects", () => {
+ let entries;
+
+ beforeAll(async () => {
+ 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();
+ });
+
+ 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);
+ }
+ });
+ });
-/*!
- * 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();
+ 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();
+
+ entries = await Query.and(Query1, Query2).toJSON().find();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.toJSON().search("source2").find();
});
-});
-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();
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeCount()
+ .includeContentType()
+ .toJSON()
+ .find();
});
-});
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
+ });
-// addparam
-test('.addParam()', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
+ test("ContentType should be present in the resultset", () => {
+ expect(entries[1]).toBeTruthy();
+ });
- 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();
+ 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);
+ });
-/*!
- * 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("Count should be present in the resultset", () => {
+ expect(entries[2]).toBeTruthy();
});
-});
+ });
-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();
+ describe(".includeEmbeddedItems()", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeEmbeddedItems().toJSON().find();
});
-});
-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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
+ });
-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();
+ describe(".includeSchema() and .includeContentType()", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeSchema()
+ .includeContentType()
+ .toJSON()
+ .find();
});
-});
-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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
-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("ContentType should be present in the resultset", () => {
+ expect(entries[1]).toBeTruthy();
});
-});
-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("ContentType title should exist", () => {
+ expect(entries[1].title).toBeDefined();
});
-});
-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("ContentType uid should match requested content type", () => {
+ expect(entries[1].uid).toBe(contentTypes.source);
+ });
+ });
+
+ describe(".includeCount(), .includeSchema() and .includeContentType()", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeCount()
+ .includeSchema()
+ .includeContentType()
+ .toJSON()
+ .find();
});
-});
-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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
-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();
+ test("ContentType should be present in the resultset", () => {
+ expect(entries[1]).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.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("ContentType title should exist", () => {
+ expect(entries[1].title).toBeDefined();
});
-});
-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();
+ 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 () => {
+ entries = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language("ja-jp")
+ .toJSON()
+ .find();
+ });
-/*!
- *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("Should return entries in the resultset", () => {
+ 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");
+ 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 () => {
+ entries = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language("ja-jp")
+ .includeFallback()
+ .toJSON()
+ .find();
+ });
+
+ 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 () => {
+ entries = await Stack.getContentTypes({
+ include_global_field_schema: true,
+ });
+ });
+
+ test("Global field schema should be present when applicable", () => {
+ 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(".notExists()");
- assert.end();
+ }
});
-});
+ });
+ });
+ describe("Field Selection Tests", () => {
+ describe(".only() - Single String Parameter", () => {
+ let entries;
-// 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();
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.only("title").toJSON().find();
});
-});
-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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
-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();
+ 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;
-// 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();
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.only("BASE", "title").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.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();
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
-// 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();
+ 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;
-// 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();
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.only(["title", "url"]).toJSON().find();
});
-});
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
+ });
-// 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();
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeReference("reference")
+ .only("BASE", ["reference"])
+ .only("reference", "title")
+ .toJSON()
+ .find();
});
-});
-// 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();
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
-// 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("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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.includeReference("reference")
+ .only("BASE", ["reference"])
+ .only("reference", ["title"])
+ .toJSON()
+ .find();
});
-});
-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");
- }
- 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');
- 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");
- }
- 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 {
+ expect(entries[0].length).toBeTruthy();
});
-});
-test('.getContentTypes()', function(assert) {
- var Query = Stack.getContentTypes({"include_global_field_schema": true})
- Query
- .then(function success(entries) {
- for(var i=0; i {
+ const allHaveReference = entries[0].every(
+ (entry) => "reference" in entry
+ );
+ expect(allHaveReference).toBe(true);
});
-});
+ });
+ });
+
+ describe("Field Exclusion Tests", () => {
+ describe(".except() - Single String Parameter", () => {
+ let entries;
-// includeReference
-test('.includeReference() - String', function(assert) {
- var Query = Stack.ContentType(contentTypes.source).Query();
-
- Query
- .includeReference('reference')
- .toJSON()
- .find()
- .then(function success(entries) {
- 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();
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.except("title").toJSON().find();
});
-});
-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');
- //assert.equal(Utils.isEntriesPublished(entries[0], Stack.environment_uid, 'en-us'), true, "Entries present in the resultset are published.");
- 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();
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
-// 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();
+ test("All entries should not have title field", () => {
+ const allExcluded = entries[0].every(
+ (entry) => entry && !("title" in entry)
+ );
+ expect(allExcluded).toBe(true);
});
-});
+ });
-// 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 {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.except("BASE", "title").toJSON().find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entries = await Query.except(["title", "file"]).toJSON().find();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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);
});
-});
-// 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 {
+ 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();
+ });
+
+ expect(allReferencesExcluded).toBe(true);
+ });
+ });
+
+ describe(".except() - For the reference - Array", () => {
+ let entries;
+
+ beforeAll(async () => {
+ 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", () => {
+ 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);
+ });
-// 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 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();
+ });
+
+ expect(allReferencesExcluded).toBe(true);
+ });
+ });
+ });
+
+ describe("Taxonomies Endpoint Tests", () => {
+ describe("Get Entries With One Term", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.Taxonomies();
+ entries = await Query.where("taxonomies.one", "term_one")
+ .toJSON()
+ .find();
});
-});
-// 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();
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
+ });
+ });
+
+ describe("Get Entries With Any Term ($in)", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.Taxonomies();
+ entries = await Query.containedIn("taxonomies.one", [
+ "term_one",
+ "term_two",
+ ])
+ .toJSON()
+ .find();
});
-});
-// 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();
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
+ });
-// 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();
+ describe("Get Entries With Any Term ($or)", () => {
+ let entries;
+
+ beforeAll(async () => {
+ 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();
});
-});
-// 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();
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
+ });
-// 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();
+ describe("Get Entries With All Terms ($and)", () => {
+ let entries;
+
+ beforeAll(async () => {
+ 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();
});
-});
-// 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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
+ });
+
+ describe("Get Entries With Any Taxonomy Terms ($exists)", () => {
+ let entries;
-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();
+ beforeAll(async () => {
+ const Query = Stack.Taxonomies();
+ entries = await Query.exists("taxonomies.one").toJSON().find();
});
-});
-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("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 () => {
+ const Query = Stack.ContentType("source").Query();
+ entries = await Query.where("taxonomies.one", "term_one")
+ .toJSON()
+ .find();
});
-});
-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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
+ });
+ });
+
+ describe("Get Entries With Any Term ($in)", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType("source").Query();
+ entries = await Query.containedIn("taxonomies.one", [
+ "term_one",
+ "term_two",
+ ])
+ .toJSON()
+ .find();
});
-});
-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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
+ });
+
+ describe("Get Entries With Any Term ($or)", () => {
+ let entries;
-// 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();
+ beforeAll(async () => {
+ 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('.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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
+ });
+
+ describe("Get Entries With All Terms ($and)", () => {
+ let entries;
-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();
+ beforeAll(async () => {
+ 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('.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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
});
-});
+ });
-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();
+ describe("Get Entries With Any Taxonomy Terms ($exists)", () => {
+ let entries;
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType("source").Query();
+ entries = await Query.exists("taxonomies.one").toJSON().find();
});
-});
-// 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("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
+ });
+ });
-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();
- })
-});
+ describe("Get Entries With Taxonomy Terms and Also Matching Its Children Term ($eq_below, level)", () => {
+ let entries;
-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();
- })
-});
\ No newline at end of file
+ beforeAll(async () => {
+ const Query = Stack.ContentType("source").Query();
+ entries = await Query.equalAndBelow("taxonomies.one", "term_one")
+ .toJSON()
+ .find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType("source").Query();
+ entries = await Query.below("taxonomies.one", "term_one")
+ .toJSON()
+ .find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType("source").Query();
+ entries = await Query.equalAndAbove("taxonomies.one", "term_one")
+ .toJSON()
+ .find();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType("source").Query();
+ entries = await Query.above("taxonomies.one", "term_one_child")
+ .toJSON()
+ .find();
+ });
+
+ test("Should return entries in the resultset", () => {
+ expect(entries[0].length).toBeTruthy();
+ });
+ });
+ });
+ describe("Variants Tests", () => {
+ describe("Variants in entry", () => {
+ let entries;
+
+ beforeAll(async () => {
+ 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", () => {
+ expect(entries[0].length).toBeTruthy();
+ });
+ });
+ });
+ });
+});
diff --git a/test/entry/findone-result-wrapper.js b/test/entry/findone-result-wrapper.js
index 1ff2171a..af8e7774 100755
--- a/test/entry/findone-result-wrapper.js
+++ b/test/entry/findone-result-wrapper.js
@@ -1,778 +1,930 @@
-'use strict';
+"use strict";
/*
* Module Dependencies.
*/
-const test = require('tape');
-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;
-/*
- * 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();
- });
-});
-
-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();
- });
-});
-
-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);
- });
+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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.ascending(field).toJSON().findOne();
+ });
+
+ 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;
+ const field = "created_at";
+
+ beforeAll(async () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.descending(field).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.containedIn("title", _in).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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("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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.notExists(queryField).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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("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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.tags(tags).toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.search("source1").toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ entry = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language("ja-jp")
+ .toJSON()
+ .findOne();
+ });
+
+ 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 () => {
+ entry = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language("ja-jp")
+ .includeFallback()
+ .toJSON()
+ .findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.includeReference("reference").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.includeReference(["reference", "other_reference"])
+ .toJSON()
+ .findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.includeSchema().toJSON().findOne();
+ });
+
+ test("Should return an entry", () => {
+ expect(entry).toBeDefined();
+ });
+ });
+
+ describe("Including ContentType", () => {
+ let entry;
+ let contentType;
+ let error = null;
+
+ beforeAll(async () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.only("title").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.only("BASE", "title").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.only(["title", "url"]).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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
- }
- 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));
- });
+ hasProperReferences = entry["reference"].every(
+ (ref) => ref && "title" in ref && "uid" in ref
+ );
}
- 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();
- });
+ } 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.except("title").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.except("BASE", "title").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.except(["title", "url"]).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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);
+ });
+ });
+ });
});
-
-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();
- });
-});
\ No newline at end of file
diff --git a/test/entry/findone.js b/test/entry/findone.js
index a1a3a052..e63d74be 100755
--- a/test/entry/findone.js
+++ b/test/entry/findone.js
@@ -1,741 +1,907 @@
-'use strict';
+"use strict";
/*
* Module Dependencies.
*/
-const test = require('tape');
-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;
-/*
- * 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();
- });
-});
-
-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();
- });
-});
-
-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
- }
+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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.ascending(field).toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.descending(field).toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(
+ contentTypes.numbers_content_type
+ ).Query();
+ entry = await Query.lessThan("num_field", value).toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(
+ contentTypes.numbers_content_type
+ ).Query();
+ entry = await Query.lessThanOrEqualTo("num_field", value)
+ .toJSON()
+ .findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.containedIn("title", _in).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.exists(queryField).toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.notExists(queryField).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.query({
+ $or: [{ title: "source1" }, { boolean: "false" }],
+ })
+ .toJSON()
+ .findOne();
+ });
+
+ 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 () => {
+ entry = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language("ja-jp")
+ .toJSON()
+ .findOne();
+ });
+
+ 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 () => {
+ entry = await Stack.ContentType(contentTypes.source)
+ .Query()
+ .language("ja-jp")
+ .includeFallback()
+ .toJSON()
+ .findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.includeReference("reference").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.includeReference(["reference", "other_reference"])
+ .toJSON()
+ .findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.includeSchema().toJSON().findOne();
+ });
+
+ test("Should return an entry", () => {
+ expect(entry).toBeDefined();
+ });
+ });
+
+ describe("Including ContentType", () => {
+ let entry;
+ let contentType;
+ let error = null;
+
+ beforeAll(async () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.only("title").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.only("BASE", "title").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.only(["title", "url"]).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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();
- });
+ } 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.except("title").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.except("BASE", "title").toJSON().findOne();
+ });
+
+ 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 () => {
+ const Query = Stack.ContentType(contentTypes.source).Query();
+ entry = await Query.except(["title", "file"]).toJSON().findOne();
+ });
+
+ 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 () => {
+ 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", () => {
+ 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 () => {
+ 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", () => {
+ 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();
+ });
+ });
+ });
});
-
-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();
- });
-});
\ 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/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/live-preview/live-preview-test.js b/test/live-preview/live-preview-test.js
index 7bd491d3..808e75d2 100644
--- a/test/live-preview/live-preview-test.js
+++ b/test/live-preview/live-preview-test.js
@@ -1,91 +1,69 @@
-
'use strict';
+const init = require("../config.js");
-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 stack1 = Contentstack.Stack(init.stack)
const stack = Contentstack.Stack({
- 'api_key': process.env.API_KEY,
- 'delivery_token': process.env.DELIVERY_TOKEN,
- 'environment': process.env.ENVIRONMENT
+ 'api_key': process.env.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) {
- 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'
- }
- });
+ 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);
+
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.io'); // rest-preview.contentstack.com
+ });
-test('should check host when live preview is disabled and management token is provided', function(assert) {
- 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'
- }
- });
+ test('should check host when live preview is disabled and management token is provided', () => {
+ 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;
- 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) {
- 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'
- }
- });
+ test('should check host when live preview is enabled and preview token is provided', () => {
+ 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;
- 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) {
- 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'
- }
- });
+ test('should check host when live preview is disabled and preview token is provided', () => {
+ 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;
- 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
diff --git a/test/sync/sync-testcases.js b/test/sync/sync-testcases.js
index 70480e68..3655e5cd 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("../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(init.stack)
+ 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 () => {
+ // 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;
+ 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.`);
+ }
+ });
+ });
+
+ 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();
+ });
+ });
});
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 {
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);
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
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