diff --git a/.github/actions/javascript/bumpVersion/index.js b/.github/actions/javascript/bumpVersion/index.js
index c8360931845a..43bd09558c26 100644
--- a/.github/actions/javascript/bumpVersion/index.js
+++ b/.github/actions/javascript/bumpVersion/index.js
@@ -1928,7 +1928,7 @@ class SemVer {
do {
const a = this.build[i]
const b = other.build[i]
- debug('build compare', i, a, b)
+ debug('prerelease compare', i, a, b)
if (a === undefined && b === undefined) {
return 0
} else if (b === undefined) {
@@ -2154,10 +2154,6 @@ const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
// Max safe segment length for coercion.
const MAX_SAFE_COMPONENT_LENGTH = 16
-// Max safe length for a build identifier. The max length minus 6 characters for
-// the shortest version with a build 0.0.0+BUILD.
-const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
-
const RELEASE_TYPES = [
'major',
'premajor',
@@ -2171,7 +2167,6 @@ const RELEASE_TYPES = [
module.exports = {
MAX_LENGTH,
MAX_SAFE_COMPONENT_LENGTH,
- MAX_SAFE_BUILD_LENGTH,
MAX_SAFE_INTEGER,
RELEASE_TYPES,
SEMVER_SPEC_VERSION,
@@ -2253,11 +2248,7 @@ module.exports = parseOptions
/***/ 9523:
/***/ ((module, exports, __nccwpck_require__) => {
-const {
- MAX_SAFE_COMPONENT_LENGTH,
- MAX_SAFE_BUILD_LENGTH,
- MAX_LENGTH,
-} = __nccwpck_require__(2293)
+const { MAX_SAFE_COMPONENT_LENGTH } = __nccwpck_require__(2293)
const debug = __nccwpck_require__(427)
exports = module.exports = {}
@@ -2268,31 +2259,16 @@ const src = exports.src = []
const t = exports.t = {}
let R = 0
-const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
-
-// Replace some greedy regex tokens to prevent regex dos issues. These regex are
-// used internally via the safeRe object since all inputs in this library get
-// normalized first to trim and collapse all extra whitespace. The original
-// regexes are exported for userland consumption and lower level usage. A
-// future breaking change could export the safer regex only with a note that
-// all input should have extra whitespace removed.
-const safeRegexReplacements = [
- ['\\s', 1],
- ['\\d', MAX_LENGTH],
- [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
-]
-
-const makeSafeRegex = (value) => {
- for (const [token, max] of safeRegexReplacements) {
- value = value
- .split(`${token}*`).join(`${token}{0,${max}}`)
- .split(`${token}+`).join(`${token}{1,${max}}`)
- }
- return value
-}
-
const createToken = (name, value, isGlobal) => {
- const safe = makeSafeRegex(value)
+ // Replace all greedy whitespace to prevent regex dos issues. These regex are
+ // used internally via the safeRe object since all inputs in this library get
+ // normalized first to trim and collapse all extra whitespace. The original
+ // regexes are exported for userland consumption and lower level usage. A
+ // future breaking change could export the safer regex only with a note that
+ // all input should have extra whitespace removed.
+ const safe = value
+ .split('\\s*').join('\\s{0,1}')
+ .split('\\s+').join('\\s')
const index = R++
debug(name, index, value)
t[name] = index
@@ -2308,13 +2284,13 @@ const createToken = (name, value, isGlobal) => {
// A single `0`, or a non-zero digit followed by zero or more digits.
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
-createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
+createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')
// ## Non-numeric Identifier
// Zero or more digits, followed by a letter or hyphen, and then zero or
// more letters, digits, or hyphens.
-createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
+createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*')
// ## Main Version
// Three dot-separated numeric identifiers.
@@ -2349,7 +2325,7 @@ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
// ## Build Metadata Identifier
// Any combination of digits, letters, or hyphens.
-createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
+createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')
// ## Build Metadata
// Plus sign, followed by one or more period-separated build metadata
@@ -2409,17 +2385,12 @@ createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
// Coercion.
// Extract anything that could conceivably be a part of a valid semver
-createToken('COERCEPLAIN', `${'(^|[^\\d])' +
+createToken('COERCE', `${'(^|[^\\d])' +
'(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
- `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)
-createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`)
-createToken('COERCEFULL', src[t.COERCEPLAIN] +
- `(?:${src[t.PRERELEASE]})?` +
- `(?:${src[t.BUILD]})?` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
`(?:$|[^\\d])`)
createToken('COERCERTL', src[t.COERCE], true)
-createToken('COERCERTLFULL', src[t.COERCEFULL], true)
// Tilde ranges.
// Meaning is "reasonably at or greater than"
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 6ef9fe299510..2ab19d13183a 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -455,34 +455,40 @@ jobs:
checkDeploymentSuccess:
runs-on: ubuntu-latest
outputs:
- IS_AT_LEAST_ONE_PLATFORM_DEPLOYED: ${{ steps.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED }}
- IS_ALL_PLATFORMS_DEPLOYED: ${{ steps.checkDeploymentSuccess.outputs.IS_ALL_PLATFORMS_DEPLOYED }}
+ IS_AT_LEAST_ONE_PLATFORM_DEPLOYED: ${{ steps.checkDeploymentSuccessOnAtLeastOnePlatform.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED }}
+ IS_ALL_PLATFORMS_DEPLOYED: ${{ steps.checkDeploymentSuccessOnAtLeastAllPlatform.outputs.IS_ALL_PLATFORMS_DEPLOYED }}
needs: [android, desktop, iOS, web]
if: ${{ always() }}
steps:
- name: Check deployment success on at least one platform
- id: checkDeploymentSuccess
+ id: checkDeploymentSuccessOnAtLeastOnePlatform
run: |
isAtLeastOnePlatformDeployed="false"
- isAllPlatformsDeployed="false"
if [ "${{ needs.android.result }}" == "success" ] || \
[ "${{ needs.iOS.result }}" == "success" ] || \
[ "${{ needs.desktop.result }}" == "success" ] || \
[ "${{ needs.web.result }}" == "success" ]; then
isAtLeastOnePlatformDeployed="true"
fi
+ echo "IS_AT_LEAST_ONE_PLATFORM_DEPLOYED=$isAtLeastOnePlatformDeployed" >> "$GITHUB_OUTPUT"
+ echo "IS_AT_LEAST_ONE_PLATFORM_DEPLOYED is $isAtLeastOnePlatformDeployed"
+
+ - name: Check deployment success on all platforms
+ id: checkDeploymentSuccessOnAtLeastAllPlatform
+ run: |
+ isAllPlatformsDeployed="false"
if [ "${{ needs.android.result }}" == "success" ] && \
[ "${{ needs.iOS.result }}" == "success" ] && \
[ "${{ needs.desktop.result }}" == "success" ] && \
[ "${{ needs.web.result }}" == "success" ]; then
isAllPlatformsDeployed="true"
fi
- echo "IS_AT_LEAST_ONE_PLATFORM_DEPLOYED=\"$isAtLeastOnePlatformDeployed\"" >> "$GITHUB_OUTPUT"
- echo "IS_ALL_PLATFORMS_DEPLOYED=\"$isAllPlatformsDeployed\"" >> "$GITHUB_OUTPUT"
+ echo "IS_ALL_PLATFORMS_DEPLOYED=$isAllPlatformsDeployed" >> "$GITHUB_OUTPUT"
+ echo "IS_ALL_PLATFORMS_DEPLOYED is $isAllPlatformsDeployed"
createPrerelease:
runs-on: ubuntu-latest
- if: ${{ github.ref == 'refs/heads/staging' && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }}
+ if: ${{ always() && github.ref == 'refs/heads/staging' && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }}
needs: [prep, checkDeploymentSuccess]
steps:
- name: Download all workflow run artifacts
@@ -540,7 +546,7 @@ jobs:
finalizeRelease:
runs-on: ubuntu-latest
- if: ${{ github.ref == 'refs/heads/production' && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }}
+ if: ${{ always() && github.ref == 'refs/heads/production' && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }}
needs: [prep, checkDeploymentSuccess]
steps:
- name: Download all workflow run artifacts
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 75775aca06de..5b5f9d40d4df 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -110,8 +110,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
- versionCode 1009003800
- versionName "9.0.38-0"
+ versionCode 1009003900
+ versionName "9.0.39-0"
// Supported language variants must be declared here to avoid from being removed during the compilation.
// This also helps us to not include unnecessary language variants in the APK.
resConfigs "en", "es"
diff --git a/babel.config.js b/babel.config.js
index 9d7224ec4436..3721edaa7afb 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -8,7 +8,12 @@ const ReactCompilerConfig = {
enableTreatRefLikeIdentifiersAsRefs: true,
},
};
-const defaultPresets = ['@babel/preset-react', '@babel/preset-env', '@babel/preset-flow', '@babel/preset-typescript'];
+/**
+ * Setting targets to node 20 to reduce JS bundle size
+ * It is also recommended by babel:
+ * https://babeljs.io/docs/options#no-targets
+ */
+const defaultPresets = ['@babel/preset-react', ['@babel/preset-env', {targets: {node: 20}}], '@babel/preset-flow', '@babel/preset-typescript'];
const defaultPlugins = [
['babel-plugin-react-compiler', ReactCompilerConfig], // must run first!
// Adding the commonjs: true option to react-native-web plugin can cause styling conflicts
diff --git a/config/webpack/webpack.common.ts b/config/webpack/webpack.common.ts
index 0640d007b960..1bab57905d0e 100644
--- a/config/webpack/webpack.common.ts
+++ b/config/webpack/webpack.common.ts
@@ -128,6 +128,13 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
resourceRegExp: /^\.\/locale$/,
contextRegExp: /moment$/,
}),
+ ...(file === '.env.production' || file === '.env.staging'
+ ? [
+ new IgnorePlugin({
+ resourceRegExp: /@welldone-software\/why-did-you-render/,
+ }),
+ ]
+ : []),
...(platform === 'web' ? [new CustomVersionFilePlugin()] : []),
new DefinePlugin({
...(platform === 'desktop' ? {} : {process: {env: {}}}),
@@ -215,6 +222,7 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
},
resolve: {
alias: {
+ lodash: 'lodash-es',
// eslint-disable-next-line @typescript-eslint/naming-convention
'react-native-config': 'react-web-config',
// eslint-disable-next-line @typescript-eslint/naming-convention
diff --git a/docs/articles/expensify-classic/connections/quickbooks-desktop/Configure-Quickbooks-Desktop.md b/docs/articles/expensify-classic/connections/quickbooks-desktop/Configure-Quickbooks-Desktop.md
index d3dcda91ffcc..917c3c007b28 100644
--- a/docs/articles/expensify-classic/connections/quickbooks-desktop/Configure-Quickbooks-Desktop.md
+++ b/docs/articles/expensify-classic/connections/quickbooks-desktop/Configure-Quickbooks-Desktop.md
@@ -42,6 +42,10 @@ The following steps help you determine the advanced settings for your connection
1. Click **Advanced** under the QuickBooks Desktop connection.
2. **Enable or disable Auto-Sync**: If enabled, QuickBooks Desktop automatically communicates changes with Expensify to ensure that the data shared between the two systems is up to date. New report approvals/reimbursements will be synced during the next auto-sync period.
+{% include info.html %}
+Please note that Auto-Sync will queue information to be added to your QuickBooks Company File the next time both your QuickBooks Company File and QuickBooks Web Connector are open.
+{% include end-info.html %}
+
# FAQ
## **How do I manually sync my QuickBooks Desktop if I have Auto-Sync disabled?**
diff --git a/docs/articles/expensify-classic/connections/quickbooks-desktop/Quickbooks-Desktop-Troubleshooting.md b/docs/articles/expensify-classic/connections/quickbooks-desktop/Quickbooks-Desktop-Troubleshooting.md
index 09afd2e4e7f2..06f894ce7ef6 100644
--- a/docs/articles/expensify-classic/connections/quickbooks-desktop/Quickbooks-Desktop-Troubleshooting.md
+++ b/docs/articles/expensify-classic/connections/quickbooks-desktop/Quickbooks-Desktop-Troubleshooting.md
@@ -89,3 +89,15 @@ If the problem persists, download the QuickBooks Desktop log file via the Web Co
{% include info.html %}
If you’re using a remote server (e.g. RightNetworks), you may need to contact that support team to request your logs.
{% include end-info.html %}
+
+# Reports not exporting to QuickBooks Desktop
+
+Generally, this is the result of not having both the QuickBooks Web Connector and the Company File open, since the Report was exported.
+
+## How to resolve
+
+1. Make sure that the Web Connector and QuickBooks Desktop Company File are both open.
+2. In the Web Connector, check that the Last Status is “Ok”.
+3. Check the Report Comments in Expensify to confirm that the report has been successfully exported to QuickBooks Desktop.
+
+If these general troubleshooting steps don’t work, reach out to Concierge with your Expensify Report ID and a screenshot of your QuickBooks Web Connector.
diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist
index 1d7be504fd51..bfea43969e01 100644
--- a/ios/NewExpensify/Info.plist
+++ b/ios/NewExpensify/Info.plist
@@ -19,7 +19,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 9.0.38
+ 9.0.39
CFBundleSignature
????
CFBundleURLTypes
@@ -40,7 +40,7 @@
CFBundleVersion
- 9.0.38.0
+ 9.0.39.0
FullStory
OrgId
diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist
index e4243d03b774..2f8941238a2d 100644
--- a/ios/NewExpensifyTests/Info.plist
+++ b/ios/NewExpensifyTests/Info.plist
@@ -15,10 +15,10 @@
CFBundlePackageType
BNDL
CFBundleShortVersionString
- 9.0.38
+ 9.0.39
CFBundleSignature
????
CFBundleVersion
- 9.0.38.0
+ 9.0.39.0
diff --git a/ios/NotificationServiceExtension/Info.plist b/ios/NotificationServiceExtension/Info.plist
index 1133bfbb4a0e..2b639ac81226 100644
--- a/ios/NotificationServiceExtension/Info.plist
+++ b/ios/NotificationServiceExtension/Info.plist
@@ -11,9 +11,9 @@
CFBundleName
$(PRODUCT_NAME)
CFBundleShortVersionString
- 9.0.38
+ 9.0.39
CFBundleVersion
- 9.0.38.0
+ 9.0.39.0
NSExtension
NSExtensionPointIdentifier
diff --git a/package-lock.json b/package-lock.json
index 42b4720432ac..a5ae221a1e14 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "new.expensify",
- "version": "9.0.38-0",
+ "version": "9.0.39-0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "new.expensify",
- "version": "9.0.38-0",
+ "version": "9.0.39-0",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
@@ -42,7 +42,6 @@
"@rnmapbox/maps": "10.1.30",
"@shopify/flash-list": "1.7.1",
"@ua/react-native-airship": "19.2.1",
- "@vue/preload-webpack-plugin": "^2.0.0",
"awesome-phonenumber": "^5.4.0",
"babel-polyfill": "^6.26.0",
"canvas-size": "^1.2.6",
@@ -60,9 +59,7 @@
"focus-trap-react": "^10.2.3",
"htmlparser2": "^7.2.0",
"idb-keyval": "^6.2.1",
- "jest-expo": "51.0.4",
- "jest-when": "^3.5.2",
- "lodash": "4.17.21",
+ "lodash-es": "4.17.21",
"lottie-react-native": "6.5.1",
"mapbox-gl": "^2.15.0",
"onfido-sdk-ui": "14.15.0",
@@ -71,7 +68,6 @@
"react": "18.3.1",
"react-beautiful-dnd": "^13.1.1",
"react-collapse": "^5.1.0",
- "react-compiler-runtime": "file:./lib/react-compiler-runtime",
"react-content-loader": "^7.0.0",
"react-dom": "18.3.1",
"react-error-boundary": "^4.0.11",
@@ -125,8 +121,7 @@
"react-plaid-link": "3.3.2",
"react-web-config": "^1.0.0",
"react-webcam": "^7.1.1",
- "semver": "^7.5.2",
- "xlsx": "file:vendor/xlsx-0.20.3.tgz"
+ "react-window": "^1.8.9"
},
"devDependencies": {
"@actions/core": "1.10.0",
@@ -149,7 +144,10 @@
"@dword-design/eslint-plugin-import-alias": "^5.0.0",
"@electron/notarize": "^2.1.0",
"@fullstory/babel-plugin-annotate-react": "^2.3.0",
+ "@fullstory/babel-plugin-react-native": "^1.2.1",
"@jest/globals": "^29.5.0",
+ "@kie/act-js": "^2.6.2",
+ "@kie/mock-github": "2.0.1",
"@ngneat/falso": "^7.1.1",
"@octokit/core": "4.0.4",
"@octokit/plugin-paginate-rest": "3.1.0",
@@ -179,7 +177,7 @@
"@types/jest": "^29.5.2",
"@types/jest-when": "^3.5.2",
"@types/js-yaml": "^4.0.5",
- "@types/lodash": "^4.14.195",
+ "@types/lodash-es": "4.17.12",
"@types/mapbox-gl": "^2.7.13",
"@types/mime-db": "^1.43.5",
"@types/node": "^20.11.5",
@@ -198,6 +196,7 @@
"@typescript-eslint/eslint-plugin": "^7.13.1",
"@typescript-eslint/parser": "^7.13.1",
"@vercel/ncc": "0.38.1",
+ "@vue/preload-webpack-plugin": "^2.0.0",
"@welldone-software/why-did-you-render": "7.0.1",
"ajv-cli": "^5.0.0",
"babel-jest": "29.4.1",
@@ -233,7 +232,9 @@
"jest-circus": "29.4.1",
"jest-cli": "29.4.1",
"jest-environment-jsdom": "^29.4.1",
+ "jest-expo": "51.0.4",
"jest-transformer-svg": "^2.0.1",
+ "jest-when": "^3.5.2",
"link": "^2.1.1",
"memfs": "^4.6.0",
"onchange": "^7.1.0",
@@ -244,10 +245,12 @@
"prettier": "^2.8.8",
"pusher-js-mock": "^0.3.3",
"react-compiler-healthcheck": "^0.0.0-experimental-ab3118d-20240725",
+ "react-compiler-runtime": "file:./lib/react-compiler-runtime",
"react-is": "^18.3.1",
"react-native-clean-project": "^4.0.0-alpha4.0",
"react-test-renderer": "18.3.1",
"reassure": "^1.0.0-rc.4",
+ "semver": "7.5.2",
"setimmediate": "^1.0.5",
"shellcheck": "^1.1.0",
"source-map": "^0.7.4",
@@ -264,7 +267,8 @@
"webpack-bundle-analyzer": "^4.5.0",
"webpack-cli": "^5.0.4",
"webpack-dev-server": "^5.0.4",
- "webpack-merge": "^5.8.0"
+ "webpack-merge": "^5.8.0",
+ "xlsx": "file:vendor/xlsx-0.20.3.tgz"
},
"engines": {
"node": "20.15.1",
@@ -273,6 +277,7 @@
},
"lib/react-compiler-runtime": {
"version": "0.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"react": "18.3.1"
@@ -1440,6 +1445,7 @@
},
"node_modules/@babel/plugin-syntax-bigint": {
"version": "7.8.3",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
@@ -2837,6 +2843,7 @@
},
"node_modules/@bcoe/v8-coverage": {
"version": "0.2.3",
+ "dev": true,
"license": "MIT"
},
"node_modules/@blakeembrey/deque": {
@@ -3031,7 +3038,7 @@
},
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
@@ -3042,7 +3049,7 @@
},
"node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
"version": "0.3.9",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
@@ -4100,6 +4107,17 @@
"node": ">=4"
}
},
+ "node_modules/@expo/cli/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@expo/cli/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -4247,6 +4265,17 @@
"node": ">=8"
}
},
+ "node_modules/@expo/config-plugins/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@expo/config-plugins/node_modules/supports-color": {
"version": "7.2.0",
"license": "MIT",
@@ -4345,6 +4374,17 @@
"node": ">=8"
}
},
+ "node_modules/@expo/config/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@expo/config/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -4634,6 +4674,17 @@
"node": ">=8"
}
},
+ "node_modules/@expo/image-utils/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@expo/image-utils/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -5261,6 +5312,17 @@
"node": ">=8"
}
},
+ "node_modules/@expo/prebuild-config/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@expo/prebuild-config/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -5772,6 +5834,7 @@
},
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
+ "dev": true,
"license": "ISC",
"dependencies": {
"camelcase": "^5.3.1",
@@ -5786,6 +5849,7 @@
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
"version": "5.3.1",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -5793,6 +5857,7 @@
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
"version": "4.1.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
@@ -5804,6 +5869,7 @@
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
"version": "5.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
@@ -5814,6 +5880,7 @@
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
"version": "2.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
@@ -5827,6 +5894,7 @@
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
"version": "4.1.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
@@ -5837,6 +5905,7 @@
},
"node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -5844,6 +5913,7 @@
},
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -5851,6 +5921,7 @@
},
"node_modules/@jest/console": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
@@ -5866,6 +5937,7 @@
},
"node_modules/@jest/console/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -5879,6 +5951,7 @@
},
"node_modules/@jest/console/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -5893,6 +5966,7 @@
},
"node_modules/@jest/console/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -5903,10 +5977,12 @@
},
"node_modules/@jest/console/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/@jest/console/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -5914,6 +5990,7 @@
},
"node_modules/@jest/console/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -5924,6 +6001,7 @@
},
"node_modules/@jest/core": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
@@ -5969,6 +6047,7 @@
},
"node_modules/@jest/core/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -5982,6 +6061,7 @@
},
"node_modules/@jest/core/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -5996,6 +6076,7 @@
},
"node_modules/@jest/core/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -6006,10 +6087,12 @@
},
"node_modules/@jest/core/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/@jest/core/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -6017,6 +6100,7 @@
},
"node_modules/@jest/core/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -6050,6 +6134,7 @@
},
"node_modules/@jest/expect": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"expect": "^29.7.0",
@@ -6061,6 +6146,7 @@
},
"node_modules/@jest/expect-utils": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"jest-get-type": "^29.6.3"
@@ -6086,6 +6172,7 @@
},
"node_modules/@jest/globals": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
@@ -6099,6 +6186,7 @@
},
"node_modules/@jest/reporters": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
@@ -6140,6 +6228,7 @@
},
"node_modules/@jest/reporters/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -6153,6 +6242,7 @@
},
"node_modules/@jest/reporters/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -6167,6 +6257,7 @@
},
"node_modules/@jest/reporters/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -6177,10 +6268,12 @@
},
"node_modules/@jest/reporters/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/@jest/reporters/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -6188,6 +6281,7 @@
},
"node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": {
"version": "6.0.2",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@babel/core": "^7.23.9",
@@ -6202,6 +6296,7 @@
},
"node_modules/@jest/reporters/node_modules/jest-worker": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*",
@@ -6215,6 +6310,7 @@
},
"node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": {
"version": "8.1.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -6226,8 +6322,21 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/@jest/reporters/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@jest/reporters/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -6248,6 +6357,7 @@
},
"node_modules/@jest/source-map": {
"version": "29.6.3",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.18",
@@ -6260,6 +6370,7 @@
},
"node_modules/@jest/test-result": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
@@ -6273,6 +6384,7 @@
},
"node_modules/@jest/test-sequencer": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/test-result": "^29.7.0",
@@ -6286,6 +6398,7 @@
},
"node_modules/@jest/transform": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
@@ -6310,6 +6423,7 @@
},
"node_modules/@jest/transform/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -6323,6 +6437,7 @@
},
"node_modules/@jest/transform/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -6337,6 +6452,7 @@
},
"node_modules/@jest/transform/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -6347,10 +6463,12 @@
},
"node_modules/@jest/transform/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/@jest/transform/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -6358,6 +6476,7 @@
},
"node_modules/@jest/transform/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -6368,6 +6487,7 @@
},
"node_modules/@jest/transform/node_modules/write-file-atomic": {
"version": "4.0.2",
+ "dev": true,
"license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
@@ -6520,6 +6640,56 @@
"react-native": "*"
}
},
+ "node_modules/@kie/act-js": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/@kie/act-js/-/act-js-2.6.2.tgz",
+ "integrity": "sha512-i366cfWluUi55rPZ6e9/aWH4tnw3Q6W1CKh9Gz6QjTvbAtS4KnUUy33I9aMXS6uwa0haw6MSahMM37vmuFCVpQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@kie/mock-github": "^2.0.0",
+ "adm-zip": "^0.5.10",
+ "ajv": "^8.12.0",
+ "bin-links": "^4.0.1",
+ "express": "^4.18.1",
+ "follow-redirects": "^1.15.2",
+ "tar": "^6.1.13",
+ "yaml": "^2.1.3"
+ },
+ "bin": {
+ "act-js": "bin/act"
+ }
+ },
+ "node_modules/@kie/mock-github": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-2.0.1.tgz",
+ "integrity": "sha512-G1FD/jg1KyW7a6NvKI4uEVJCK3eJnzXkh4Ikxn2is5tiNC980lavi8ak6bn1QEFEgpYcfM4DpZM3yHDfOmyLuQ==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/openapi-types-ghec": "^18.0.0",
+ "ajv": "^8.11.0",
+ "express": "^4.18.1",
+ "fast-glob": "^3.2.12",
+ "fs-extra": "^10.1.0",
+ "nock": "^13.2.7",
+ "simple-git": "^3.8.0",
+ "totalist": "^3.0.0"
+ }
+ },
+ "node_modules/@kie/mock-github/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@kwsites/file-exists": {
"version": "1.1.1",
"dev": true,
@@ -6939,6 +7109,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@octokit/openapi-types-ghec": {
+ "version": "18.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-18.1.1.tgz",
+ "integrity": "sha512-5Ri7FLYX4gJSdG+G0Q8QDca/gOLfkPN4YR2hkbVg6hEL+0N62MIsJPTyNaT9pGEXCLd1KbYV6Lh3T2ggsmyBJw==",
+ "dev": true
+ },
"node_modules/@octokit/plugin-paginate-rest": {
"version": "3.1.0",
"dev": true,
@@ -13218,6 +13394,18 @@
"node": ">= 4"
}
},
+ "node_modules/@storybook/core/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@storybook/core/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -15207,22 +15395,22 @@
},
"node_modules/@tsconfig/node10": {
"version": "1.0.9",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node16": {
"version": "1.0.4",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/@turf/along": {
@@ -15366,6 +15554,7 @@
},
"node_modules/@types/babel__core": {
"version": "7.20.5",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.20.7",
@@ -15377,6 +15566,7 @@
},
"node_modules/@types/babel__generator": {
"version": "7.6.4",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.0.0"
@@ -15384,6 +15574,7 @@
},
"node_modules/@types/babel__template": {
"version": "7.4.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.1.0",
@@ -15392,6 +15583,7 @@
},
"node_modules/@types/babel__traverse": {
"version": "7.18.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.3.0"
@@ -15543,6 +15735,7 @@
},
"node_modules/@types/graceful-fs": {
"version": "4.1.9",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*"
@@ -15570,6 +15763,7 @@
},
"node_modules/@types/html-minifier-terser": {
"version": "6.1.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/@types/http-cache-semantics": {
@@ -15632,6 +15826,7 @@
},
"node_modules/@types/jsdom": {
"version": "20.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*",
@@ -15641,6 +15836,7 @@
},
"node_modules/@types/jsdom/node_modules/entities": {
"version": "4.5.0",
+ "dev": true,
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
@@ -15651,6 +15847,7 @@
},
"node_modules/@types/jsdom/node_modules/parse5": {
"version": "7.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"entities": "^4.4.0"
@@ -15681,6 +15878,15 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/lodash-es": {
+ "version": "4.17.12",
+ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+ "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
"node_modules/@types/mapbox-gl": {
"version": "2.7.13",
"license": "MIT",
@@ -15949,6 +16155,7 @@
},
"node_modules/@types/tough-cookie": {
"version": "4.0.2",
+ "dev": true,
"license": "MIT"
},
"node_modules/@types/unist": {
@@ -16279,6 +16486,18 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/@typescript-eslint/rule-tester/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@typescript-eslint/scope-manager": {
"version": "7.13.1",
"dev": true,
@@ -16403,6 +16622,18 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/@typescript-eslint/typescript-estree/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@typescript-eslint/utils": {
"version": "5.62.0",
"dev": true,
@@ -16587,6 +16818,7 @@
},
"node_modules/@vue/preload-webpack-plugin": {
"version": "2.0.0",
+ "dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=6.0.0"
@@ -16842,6 +17074,7 @@
},
"node_modules/abab": {
"version": "2.0.6",
+ "dev": true,
"license": "BSD-3-Clause"
},
"node_modules/abbrev": {
@@ -16883,6 +17116,7 @@
},
"node_modules/acorn-globals": {
"version": "7.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"acorn": "^8.1.0",
@@ -16891,6 +17125,7 @@
},
"node_modules/acorn-globals/node_modules/acorn": {
"version": "8.11.3",
+ "dev": true,
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -16901,6 +17136,7 @@
},
"node_modules/acorn-globals/node_modules/acorn-walk": {
"version": "8.3.1",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.4.0"
@@ -16922,6 +17158,15 @@
"node": ">=0.4.0"
}
},
+ "node_modules/adm-zip": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz",
+ "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0"
+ }
+ },
"node_modules/agent-base": {
"version": "6.0.2",
"license": "MIT",
@@ -17387,7 +17632,7 @@
},
"node_modules/arg": {
"version": "4.1.3",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/argparse": {
@@ -17739,6 +17984,7 @@
},
"node_modules/babel-jest": {
"version": "29.4.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/transform": "^29.4.1",
@@ -17758,6 +18004,7 @@
},
"node_modules/babel-jest/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -17771,6 +18018,7 @@
},
"node_modules/babel-jest/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -17785,6 +18033,7 @@
},
"node_modules/babel-jest/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -17795,10 +18044,12 @@
},
"node_modules/babel-jest/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/babel-jest/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -17806,6 +18057,7 @@
},
"node_modules/babel-jest/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -17971,6 +18223,7 @@
},
"node_modules/babel-plugin-istanbul": {
"version": "6.1.1",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -17985,6 +18238,7 @@
},
"node_modules/babel-plugin-jest-hoist": {
"version": "29.6.3",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/template": "^7.3.3",
@@ -18283,6 +18537,7 @@
},
"node_modules/babel-preset-current-node-syntax": {
"version": "1.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/plugin-syntax-async-generators": "^7.8.4",
@@ -18595,6 +18850,7 @@
},
"node_modules/babel-preset-jest": {
"version": "29.6.3",
+ "dev": true,
"license": "MIT",
"dependencies": {
"babel-plugin-jest-hoist": "^29.6.3",
@@ -18702,6 +18958,46 @@
"node": "*"
}
},
+ "node_modules/bin-links": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.4.tgz",
+ "integrity": "sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==",
+ "dev": true,
+ "dependencies": {
+ "cmd-shim": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "read-cmd-shim": "^4.0.0",
+ "write-file-atomic": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/bin-links/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/bin-links/node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/binary-extensions": {
"version": "2.2.0",
"dev": true,
@@ -19333,6 +19629,7 @@
},
"node_modules/camel-case": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"pascal-case": "^3.1.2",
@@ -19421,6 +19718,7 @@
},
"node_modules/char-regex": {
"version": "1.0.2",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
@@ -19557,6 +19855,7 @@
},
"node_modules/clean-css": {
"version": "5.3.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"source-map": "~0.6.0"
@@ -19567,6 +19866,7 @@
},
"node_modules/clean-css/node_modules/source-map": {
"version": "0.6.1",
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -19718,8 +20018,18 @@
"node": ">=6"
}
},
+ "node_modules/cmd-shim": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz",
+ "integrity": "sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/co": {
"version": "4.6.0",
+ "dev": true,
"license": "MIT",
"engines": {
"iojs": ">= 1.0.0",
@@ -19728,6 +20038,7 @@
},
"node_modules/collect-v8-coverage": {
"version": "1.0.1",
+ "dev": true,
"license": "MIT"
},
"node_modules/color": {
@@ -20475,7 +20786,7 @@
},
"node_modules/create-require": {
"version": "1.1.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/create-storybook": {
@@ -20900,6 +21211,7 @@
},
"node_modules/cssom": {
"version": "0.5.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/csstype": {
@@ -21012,6 +21324,7 @@
},
"node_modules/decimal.js": {
"version": "10.4.3",
+ "dev": true,
"license": "MIT"
},
"node_modules/decode-uri-component": {
@@ -21342,6 +21655,7 @@
},
"node_modules/detect-newline": {
"version": "3.1.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -21373,9 +21687,21 @@
"diagnostic-channel": "*"
}
},
+ "node_modules/diagnostic-channel/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/diff": {
"version": "4.0.2",
- "devOptional": true,
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
@@ -21383,6 +21709,7 @@
},
"node_modules/diff-sequences": {
"version": "29.6.3",
+ "dev": true,
"license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -21535,6 +21862,7 @@
},
"node_modules/dom-converter": {
"version": "0.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"utila": "~0.4"
@@ -21560,6 +21888,7 @@
},
"node_modules/domexception": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"webidl-conversions": "^7.0.0"
@@ -21607,6 +21936,7 @@
},
"node_modules/dot-case": {
"version": "3.0.4",
+ "dev": true,
"license": "MIT",
"dependencies": {
"no-case": "^3.0.4",
@@ -21919,6 +22249,7 @@
},
"node_modules/emittery": {
"version": "0.13.1",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -22314,6 +22645,7 @@
},
"node_modules/escodegen": {
"version": "2.1.0",
+ "dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"esprima": "^4.0.1",
@@ -22333,6 +22665,7 @@
},
"node_modules/escodegen/node_modules/source-map": {
"version": "0.6.1",
+ "dev": true,
"license": "BSD-3-Clause",
"optional": true,
"engines": {
@@ -22601,6 +22934,18 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint-config-expensify/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/eslint-config-prettier": {
"version": "9.1.0",
"dev": true,
@@ -22802,6 +23147,18 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/eslint-plugin-deprecation/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/eslint-plugin-es": {
"version": "4.1.0",
"dev": true,
@@ -23641,12 +23998,14 @@
},
"node_modules/exit": {
"version": "0.1.2",
+ "dev": true,
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/expect": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/expect-utils": "^29.7.0",
@@ -23679,6 +24038,17 @@
"ua-parser-js": "^1.0.38"
}
},
+ "node_modules/expensify-common/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/expensify-common/node_modules/ua-parser-js": {
"version": "1.0.38",
"funding": [
@@ -23978,6 +24348,17 @@
"node": ">=8"
}
},
+ "node_modules/expo/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/expo/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -25091,6 +25472,7 @@
},
"node_modules/get-package-type": {
"version": "0.1.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8.0.0"
@@ -25505,6 +25887,7 @@
},
"node_modules/he": {
"version": "1.2.0",
+ "dev": true,
"license": "MIT",
"bin": {
"he": "bin/he"
@@ -25573,6 +25956,7 @@
},
"node_modules/html-encoding-sniffer": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"whatwg-encoding": "^2.0.0"
@@ -25597,10 +25981,12 @@
},
"node_modules/html-escaper": {
"version": "2.0.2",
+ "dev": true,
"license": "MIT"
},
"node_modules/html-minifier-terser": {
"version": "6.1.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"camel-case": "^4.1.2",
@@ -25620,6 +26006,7 @@
},
"node_modules/html-minifier-terser/node_modules/commander": {
"version": "8.3.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 12"
@@ -25638,6 +26025,7 @@
},
"node_modules/html-webpack-plugin": {
"version": "5.5.3",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@types/html-minifier-terser": "^6.0.0",
@@ -25957,6 +26345,7 @@
},
"node_modules/iconv-lite": {
"version": "0.6.3",
+ "devOptional": true,
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -26069,6 +26458,7 @@
},
"node_modules/import-local": {
"version": "3.1.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"pkg-dir": "^4.2.0",
@@ -26086,6 +26476,7 @@
},
"node_modules/import-local/node_modules/find-up": {
"version": "4.1.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
@@ -26097,6 +26488,7 @@
},
"node_modules/import-local/node_modules/locate-path": {
"version": "5.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
@@ -26107,6 +26499,7 @@
},
"node_modules/import-local/node_modules/p-limit": {
"version": "2.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
@@ -26120,6 +26513,7 @@
},
"node_modules/import-local/node_modules/p-locate": {
"version": "4.1.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
@@ -26130,6 +26524,7 @@
},
"node_modules/import-local/node_modules/path-exists": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -26137,6 +26532,7 @@
},
"node_modules/import-local/node_modules/pkg-dir": {
"version": "4.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"find-up": "^4.0.0"
@@ -26614,6 +27010,7 @@
},
"node_modules/is-generator-fn": {
"version": "2.1.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -26820,6 +27217,7 @@
},
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
+ "dev": true,
"license": "MIT"
},
"node_modules/is-regex": {
@@ -26995,6 +27393,7 @@
},
"node_modules/istanbul-lib-coverage": {
"version": "3.2.0",
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=8"
@@ -27002,6 +27401,7 @@
},
"node_modules/istanbul-lib-instrument": {
"version": "5.2.0",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"@babel/core": "^7.12.3",
@@ -27016,6 +27416,7 @@
},
"node_modules/istanbul-lib-instrument/node_modules/semver": {
"version": "6.3.1",
+ "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -27023,6 +27424,7 @@
},
"node_modules/istanbul-lib-report": {
"version": "3.0.1",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"istanbul-lib-coverage": "^3.0.0",
@@ -27035,6 +27437,7 @@
},
"node_modules/istanbul-lib-report/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -27042,6 +27445,7 @@
},
"node_modules/istanbul-lib-report/node_modules/make-dir": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"semver": "^7.5.3"
@@ -27053,8 +27457,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/istanbul-lib-report/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/istanbul-lib-report/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -27065,6 +27482,7 @@
},
"node_modules/istanbul-lib-source-maps": {
"version": "4.0.1",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"debug": "^4.1.1",
@@ -27077,6 +27495,7 @@
},
"node_modules/istanbul-lib-source-maps/node_modules/source-map": {
"version": "0.6.1",
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -27084,6 +27503,7 @@
},
"node_modules/istanbul-reports": {
"version": "3.1.7",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"html-escaper": "^2.0.0",
@@ -27210,6 +27630,7 @@
},
"node_modules/jest": {
"version": "29.4.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/core": "^29.4.1",
@@ -27234,6 +27655,7 @@
},
"node_modules/jest-changed-files": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"execa": "^5.0.0",
@@ -27339,6 +27761,7 @@
},
"node_modules/jest-cli": {
"version": "29.4.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/core": "^29.4.1",
@@ -27371,6 +27794,7 @@
},
"node_modules/jest-cli/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -27384,6 +27808,7 @@
},
"node_modules/jest-cli/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -27398,6 +27823,7 @@
},
"node_modules/jest-cli/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -27408,10 +27834,12 @@
},
"node_modules/jest-cli/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-cli/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -27419,6 +27847,7 @@
},
"node_modules/jest-cli/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -27429,6 +27858,7 @@
},
"node_modules/jest-config": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
@@ -27472,6 +27902,7 @@
},
"node_modules/jest-config/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -27485,6 +27916,7 @@
},
"node_modules/jest-config/node_modules/babel-jest": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/transform": "^29.7.0",
@@ -27504,6 +27936,7 @@
},
"node_modules/jest-config/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -27518,6 +27951,7 @@
},
"node_modules/jest-config/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -27528,10 +27962,12 @@
},
"node_modules/jest-config/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-config/node_modules/dedent": {
"version": "1.5.3",
+ "dev": true,
"license": "MIT",
"peerDependencies": {
"babel-plugin-macros": "^3.1.0"
@@ -27544,6 +27980,7 @@
},
"node_modules/jest-config/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -27551,6 +27988,7 @@
},
"node_modules/jest-config/node_modules/jest-circus": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
@@ -27580,6 +28018,7 @@
},
"node_modules/jest-config/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -27590,6 +28029,7 @@
},
"node_modules/jest-diff": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
@@ -27603,6 +28043,7 @@
},
"node_modules/jest-diff/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -27616,6 +28057,7 @@
},
"node_modules/jest-diff/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -27630,6 +28072,7 @@
},
"node_modules/jest-diff/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -27640,10 +28083,12 @@
},
"node_modules/jest-diff/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-diff/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -27651,6 +28096,7 @@
},
"node_modules/jest-diff/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -27661,6 +28107,7 @@
},
"node_modules/jest-docblock": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"detect-newline": "^3.0.0"
@@ -27671,6 +28118,7 @@
},
"node_modules/jest-each": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
@@ -27685,6 +28133,7 @@
},
"node_modules/jest-each/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -27698,6 +28147,7 @@
},
"node_modules/jest-each/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -27712,6 +28162,7 @@
},
"node_modules/jest-each/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -27722,10 +28173,12 @@
},
"node_modules/jest-each/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-each/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -27733,6 +28186,7 @@
},
"node_modules/jest-each/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -27743,6 +28197,7 @@
},
"node_modules/jest-environment-jsdom": {
"version": "29.4.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/environment": "^29.4.1",
@@ -27768,6 +28223,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/acorn": {
"version": "8.11.3",
+ "dev": true,
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -27778,6 +28234,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/cssstyle": {
"version": "2.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"cssom": "~0.3.6"
@@ -27788,10 +28245,12 @@
},
"node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": {
"version": "0.3.8",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-environment-jsdom/node_modules/data-urls": {
"version": "3.0.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"abab": "^2.0.6",
@@ -27804,6 +28263,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/entities": {
"version": "4.5.0",
+ "dev": true,
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
@@ -27814,6 +28274,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/form-data": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
@@ -27826,6 +28287,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/jsdom": {
"version": "20.0.3",
+ "dev": true,
"license": "MIT",
"dependencies": {
"abab": "^2.0.6",
@@ -27869,6 +28331,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/parse5": {
"version": "7.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"entities": "^4.4.0"
@@ -27879,6 +28342,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/tr46": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"punycode": "^2.1.1"
@@ -27889,6 +28353,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"xml-name-validator": "^4.0.0"
@@ -27899,6 +28364,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -27906,6 +28372,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/whatwg-url": {
"version": "11.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"tr46": "^3.0.0",
@@ -27919,6 +28386,7 @@
"version": "8.17.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "dev": true,
"engines": {
"node": ">=10.0.0"
},
@@ -27937,6 +28405,7 @@
},
"node_modules/jest-environment-jsdom/node_modules/xml-name-validator": {
"version": "4.0.0",
+ "dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=12"
@@ -27961,6 +28430,7 @@
"version": "51.0.4",
"resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.4.tgz",
"integrity": "sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug==",
+ "dev": true,
"dependencies": {
"@expo/config": "~9.0.0-beta.0",
"@expo/json-file": "^8.3.0",
@@ -27979,26 +28449,11 @@
"jest": "bin/jest.js"
}
},
- "node_modules/jest-expo/node_modules/@babel/code-frame": {
- "version": "7.10.4",
- "license": "MIT",
- "dependencies": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "node_modules/jest-expo/node_modules/@expo/json-file": {
- "version": "8.3.1",
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "~7.10.4",
- "json5": "^2.2.2",
- "write-file-atomic": "^2.3.0"
- }
- },
"node_modules/jest-expo/node_modules/json5": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
"integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
+ "dev": true,
"bin": {
"json5": "lib/cli.js"
},
@@ -28008,6 +28463,7 @@
},
"node_modules/jest-expo/node_modules/react-test-renderer": {
"version": "18.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"react-is": "^18.2.0",
@@ -28020,6 +28476,7 @@
},
"node_modules/jest-expo/node_modules/scheduler": {
"version": "0.23.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
@@ -28034,6 +28491,7 @@
},
"node_modules/jest-haste-map": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
@@ -28057,6 +28515,7 @@
},
"node_modules/jest-haste-map/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -28064,6 +28523,7 @@
},
"node_modules/jest-haste-map/node_modules/jest-worker": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*",
@@ -28077,6 +28537,7 @@
},
"node_modules/jest-haste-map/node_modules/supports-color": {
"version": "8.1.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -28090,6 +28551,7 @@
},
"node_modules/jest-leak-detector": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"jest-get-type": "^29.6.3",
@@ -28101,6 +28563,7 @@
},
"node_modules/jest-matcher-utils": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
@@ -28114,6 +28577,7 @@
},
"node_modules/jest-matcher-utils/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -28127,6 +28591,7 @@
},
"node_modules/jest-matcher-utils/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -28141,6 +28606,7 @@
},
"node_modules/jest-matcher-utils/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -28151,10 +28617,12 @@
},
"node_modules/jest-matcher-utils/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-matcher-utils/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -28162,6 +28630,7 @@
},
"node_modules/jest-matcher-utils/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -28260,6 +28729,7 @@
},
"node_modules/jest-pnp-resolver": {
"version": "1.2.3",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -28275,6 +28745,7 @@
},
"node_modules/jest-regex-util": {
"version": "29.6.3",
+ "dev": true,
"license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -28282,6 +28753,7 @@
},
"node_modules/jest-resolve": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
@@ -28300,6 +28772,7 @@
},
"node_modules/jest-resolve-dependencies": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"jest-regex-util": "^29.6.3",
@@ -28311,6 +28784,7 @@
},
"node_modules/jest-resolve/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -28324,6 +28798,7 @@
},
"node_modules/jest-resolve/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -28338,6 +28813,7 @@
},
"node_modules/jest-resolve/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -28348,10 +28824,12 @@
},
"node_modules/jest-resolve/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-resolve/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -28359,6 +28837,7 @@
},
"node_modules/jest-resolve/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -28369,6 +28848,7 @@
},
"node_modules/jest-runner": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/console": "^29.7.0",
@@ -28399,6 +28879,7 @@
},
"node_modules/jest-runner/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -28412,6 +28893,7 @@
},
"node_modules/jest-runner/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -28426,6 +28908,7 @@
},
"node_modules/jest-runner/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -28436,10 +28919,12 @@
},
"node_modules/jest-runner/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-runner/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -28447,6 +28932,7 @@
},
"node_modules/jest-runner/node_modules/jest-worker": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*",
@@ -28460,6 +28946,7 @@
},
"node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": {
"version": "8.1.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -28473,6 +28960,7 @@
},
"node_modules/jest-runner/node_modules/source-map": {
"version": "0.6.1",
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -28480,6 +28968,7 @@
},
"node_modules/jest-runner/node_modules/source-map-support": {
"version": "0.5.13",
+ "dev": true,
"license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
@@ -28488,6 +28977,7 @@
},
"node_modules/jest-runner/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -28498,6 +28988,7 @@
},
"node_modules/jest-runtime": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/environment": "^29.7.0",
@@ -28529,6 +29020,7 @@
},
"node_modules/jest-runtime/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -28542,6 +29034,7 @@
},
"node_modules/jest-runtime/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -28556,6 +29049,7 @@
},
"node_modules/jest-runtime/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -28566,10 +29060,12 @@
},
"node_modules/jest-runtime/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-runtime/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -28577,6 +29073,7 @@
},
"node_modules/jest-runtime/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -28587,6 +29084,7 @@
},
"node_modules/jest-snapshot": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.11.6",
@@ -28616,6 +29114,7 @@
},
"node_modules/jest-snapshot/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -28629,6 +29128,7 @@
},
"node_modules/jest-snapshot/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -28643,6 +29143,7 @@
},
"node_modules/jest-snapshot/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -28653,17 +29154,32 @@
},
"node_modules/jest-snapshot/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-snapshot/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/jest-snapshot/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -28829,6 +29345,7 @@
},
"node_modules/jest-watch-select-projects": {
"version": "2.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-escapes": "^4.3.0",
@@ -28838,6 +29355,7 @@
},
"node_modules/jest-watch-select-projects/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -28851,6 +29369,7 @@
},
"node_modules/jest-watch-select-projects/node_modules/chalk": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -28862,6 +29381,7 @@
},
"node_modules/jest-watch-select-projects/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -28872,10 +29392,12 @@
},
"node_modules/jest-watch-select-projects/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-watch-select-projects/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -28883,6 +29405,7 @@
},
"node_modules/jest-watch-select-projects/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -28893,6 +29416,7 @@
},
"node_modules/jest-watch-typeahead": {
"version": "2.2.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-escapes": "^6.0.0",
@@ -28912,6 +29436,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/ansi-escapes": {
"version": "6.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"type-fest": "^3.0.0"
@@ -28925,6 +29450,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/ansi-regex": {
"version": "6.0.1",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -28935,6 +29461,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -28948,6 +29475,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -28962,6 +29490,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/char-regex": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=12.20"
@@ -28969,6 +29498,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -28979,10 +29509,12 @@
},
"node_modules/jest-watch-typeahead/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-watch-typeahead/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -28990,6 +29522,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/slash": {
"version": "5.1.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=14.16"
@@ -29000,6 +29533,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/string-length": {
"version": "5.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"char-regex": "^2.0.0",
@@ -29014,6 +29548,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/strip-ansi": {
"version": "7.1.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
@@ -29027,6 +29562,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -29037,6 +29573,7 @@
},
"node_modules/jest-watch-typeahead/node_modules/type-fest": {
"version": "3.13.1",
+ "dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=14.16"
@@ -29047,6 +29584,7 @@
},
"node_modules/jest-watcher": {
"version": "29.7.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jest/test-result": "^29.7.0",
@@ -29064,6 +29602,7 @@
},
"node_modules/jest-watcher/node_modules/ansi-styles": {
"version": "4.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -29077,6 +29616,7 @@
},
"node_modules/jest-watcher/node_modules/chalk": {
"version": "4.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -29091,6 +29631,7 @@
},
"node_modules/jest-watcher/node_modules/color-convert": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -29101,10 +29642,12 @@
},
"node_modules/jest-watcher/node_modules/color-name": {
"version": "1.1.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/jest-watcher/node_modules/has-flag": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -29112,6 +29655,7 @@
},
"node_modules/jest-watcher/node_modules/supports-color": {
"version": "7.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -29122,6 +29666,7 @@
},
"node_modules/jest-when": {
"version": "3.5.2",
+ "dev": true,
"license": "MIT",
"peerDependencies": {
"jest": ">= 25"
@@ -29847,6 +30392,11 @@
"version": "4.17.21",
"license": "MIT"
},
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
"dev": true,
@@ -30023,6 +30573,7 @@
},
"node_modules/lower-case": {
"version": "2.0.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"tslib": "^2.0.3"
@@ -30089,7 +30640,7 @@
},
"node_modules/make-error": {
"version": "1.3.6",
- "devOptional": true,
+ "dev": true,
"license": "ISC"
},
"node_modules/make-event-props": {
@@ -31328,6 +31879,7 @@
},
"node_modules/natural-compare": {
"version": "1.4.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/natural-compare-lite": {
@@ -31357,6 +31909,7 @@
},
"node_modules/no-case": {
"version": "3.0.4",
+ "dev": true,
"license": "MIT",
"dependencies": {
"lower-case": "^2.0.2",
@@ -31370,6 +31923,20 @@
"node": ">=12.0.0"
}
},
+ "node_modules/nock": {
+ "version": "13.5.5",
+ "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.5.tgz",
+ "integrity": "sha512-XKYnqUrCwXC8DGG1xX4YH5yNIrlh9c065uaMZZHUoeUUINTOyt+x/G+ezYk0Ft6ExSREVIs+qBJDK503viTfFA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.0",
+ "json-stringify-safe": "^5.0.1",
+ "propagate": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13"
+ }
+ },
"node_modules/node-abi": {
"version": "3.65.0",
"dev": true,
@@ -31607,6 +32174,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/npm-normalize-package-bin": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
+ "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/npm-package-arg": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz",
@@ -31674,6 +32250,7 @@
},
"node_modules/nwsapi": {
"version": "2.2.7",
+ "dev": true,
"license": "MIT"
},
"node_modules/nypm": {
@@ -32319,6 +32896,7 @@
},
"node_modules/param-case": {
"version": "3.0.4",
+ "dev": true,
"license": "MIT",
"dependencies": {
"dot-case": "^3.0.4",
@@ -32379,6 +32957,7 @@
},
"node_modules/pascal-case": {
"version": "3.1.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"no-case": "^3.0.4",
@@ -32502,6 +33081,18 @@
"rimraf": "bin.js"
}
},
+ "node_modules/patch-package/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/patch-package/node_modules/slash": {
"version": "2.0.0",
"dev": true,
@@ -33000,6 +33591,7 @@
},
"node_modules/pretty-error": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"lodash": "^4.17.20",
@@ -33110,6 +33702,15 @@
"version": "16.13.1",
"license": "MIT"
},
+ "node_modules/propagate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
+ "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/protocol-buffers-schema": {
"version": "3.6.0",
"license": "MIT"
@@ -33128,6 +33729,7 @@
},
"node_modules/psl": {
"version": "1.9.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/pump": {
@@ -33147,6 +33749,7 @@
},
"node_modules/pure-rand": {
"version": "6.0.4",
+ "dev": true,
"funding": [
{
"type": "individual",
@@ -33239,6 +33842,7 @@
},
"node_modules/querystringify": {
"version": "2.2.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/queue": {
@@ -36259,6 +36863,15 @@
"read-binary-file-arch": "cli.js"
}
},
+ "node_modules/read-cmd-shim": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz",
+ "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/read-config-file": {
"version": "6.4.0",
"dev": true,
@@ -36591,6 +37204,7 @@
},
"node_modules/relateurl": {
"version": "0.2.7",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.10"
@@ -36603,6 +37217,7 @@
},
"node_modules/renderkid": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"css-select": "^4.1.3",
@@ -36614,6 +37229,7 @@
},
"node_modules/renderkid/node_modules/css-select": {
"version": "4.3.0",
+ "dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
@@ -36628,6 +37244,7 @@
},
"node_modules/renderkid/node_modules/htmlparser2": {
"version": "6.1.0",
+ "dev": true,
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
@@ -36709,6 +37326,7 @@
},
"node_modules/requires-port": {
"version": "1.0.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/resedit": {
@@ -36750,6 +37368,7 @@
},
"node_modules/resolve-cwd": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"resolve-from": "^5.0.0"
@@ -36932,6 +37551,7 @@
},
"node_modules/safer-buffer": {
"version": "2.1.2",
+ "devOptional": true,
"license": "MIT"
},
"node_modules/sanitize-filename": {
@@ -36948,6 +37568,7 @@
},
"node_modules/saxes": {
"version": "6.0.0",
+ "dev": true,
"license": "ISC",
"dependencies": {
"xmlchars": "^2.2.0"
@@ -37035,9 +37656,12 @@
}
},
"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.5.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
+ "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
@@ -37511,6 +38135,18 @@
"node": ">=10"
}
},
+ "node_modules/simple-update-notifier/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,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/simply-deferred": {
"version": "3.0.0",
"resolved": "git+ssh://git@github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5",
@@ -37981,6 +38617,7 @@
},
"node_modules/string-length": {
"version": "4.0.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"char-regex": "^1.0.2",
@@ -38131,6 +38768,7 @@
},
"node_modules/strip-bom": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -38163,6 +38801,7 @@
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -38432,6 +39071,7 @@
},
"node_modules/symbol-tree": {
"version": "3.2.4",
+ "dev": true,
"license": "MIT"
},
"node_modules/tabbable": {
@@ -38691,6 +39331,7 @@
},
"node_modules/test-exclude": {
"version": "6.0.0",
+ "dev": true,
"license": "ISC",
"dependencies": {
"@istanbuljs/schema": "^0.1.2",
@@ -38925,6 +39566,7 @@
},
"node_modules/tough-cookie": {
"version": "4.1.3",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"psl": "^1.1.33",
@@ -38938,6 +39580,7 @@
},
"node_modules/tough-cookie/node_modules/universalify": {
"version": "0.2.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 4.0.0"
@@ -39059,6 +39702,18 @@
"node": ">=6"
}
},
+ "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==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/ts-jest/node_modules/yargs-parser": {
"version": "21.1.1",
"dev": true,
@@ -39069,7 +39724,7 @@
},
"node_modules/ts-node": {
"version": "10.9.2",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
@@ -39111,7 +39766,7 @@
},
"node_modules/ts-node/node_modules/acorn": {
"version": "8.11.3",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -39122,7 +39777,7 @@
},
"node_modules/ts-node/node_modules/acorn-walk": {
"version": "8.3.2",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.4.0"
@@ -39688,6 +40343,7 @@
},
"node_modules/url-parse": {
"version": "1.5.10",
+ "dev": true,
"license": "MIT",
"dependencies": {
"querystringify": "^2.1.1",
@@ -39889,6 +40545,7 @@
},
"node_modules/utila": {
"version": "0.4.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/utils-merge": {
@@ -39914,11 +40571,12 @@
},
"node_modules/v8-compile-cache-lib": {
"version": "3.0.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/v8-to-istanbul": {
"version": "9.2.0",
+ "dev": true,
"license": "ISC",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.12",
@@ -40059,6 +40717,7 @@
},
"node_modules/webidl-conversions": {
"version": "7.0.0",
+ "dev": true,
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
@@ -40665,6 +41324,7 @@
},
"node_modules/whatwg-encoding": {
"version": "2.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"iconv-lite": "0.6.3"
@@ -40930,6 +41590,7 @@
"version": "0.20.3",
"resolved": "file:vendor/xlsx-0.20.3.tgz",
"integrity": "sha512-oLDq3jw7AcLqKWH2AhCpVTZl8mf6X2YReP+Neh0SJUzV/BdZYjth94tG5toiMB1PPrYtxOCfaoUCkvtuH+3AJA==",
+ "dev": true,
"bin": {
"xlsx": "bin/xlsx.njs"
},
@@ -41006,6 +41667,7 @@
},
"node_modules/xmlchars": {
"version": "2.2.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/xpath": {
@@ -41075,7 +41737,7 @@
},
"node_modules/yn": {
"version": "3.1.1",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
diff --git a/package.json b/package.json
index 1ab3e30d7dd6..3d808af65ba2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
- "version": "9.0.38-0",
+ "version": "9.0.39-0",
"author": "Expensify, Inc.",
"homepage": "https://new.expensify.com",
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
@@ -99,7 +99,6 @@
"@rnmapbox/maps": "10.1.30",
"@shopify/flash-list": "1.7.1",
"@ua/react-native-airship": "19.2.1",
- "@vue/preload-webpack-plugin": "^2.0.0",
"awesome-phonenumber": "^5.4.0",
"babel-polyfill": "^6.26.0",
"canvas-size": "^1.2.6",
@@ -117,9 +116,7 @@
"focus-trap-react": "^10.2.3",
"htmlparser2": "^7.2.0",
"idb-keyval": "^6.2.1",
- "jest-expo": "51.0.4",
- "jest-when": "^3.5.2",
- "lodash": "4.17.21",
+ "lodash-es": "4.17.21",
"lottie-react-native": "6.5.1",
"mapbox-gl": "^2.15.0",
"onfido-sdk-ui": "14.15.0",
@@ -128,7 +125,6 @@
"react": "18.3.1",
"react-beautiful-dnd": "^13.1.1",
"react-collapse": "^5.1.0",
- "react-compiler-runtime": "file:./lib/react-compiler-runtime",
"react-content-loader": "^7.0.0",
"react-dom": "18.3.1",
"react-error-boundary": "^4.0.11",
@@ -182,10 +178,18 @@
"react-plaid-link": "3.3.2",
"react-web-config": "^1.0.0",
"react-webcam": "^7.1.1",
- "semver": "^7.5.2",
- "xlsx": "file:vendor/xlsx-0.20.3.tgz"
+ "react-window": "^1.8.9"
},
"devDependencies": {
+ "@fullstory/babel-plugin-react-native": "^1.2.1",
+ "@kie/act-js": "^2.6.2",
+ "@kie/mock-github": "2.0.1",
+ "@vue/preload-webpack-plugin": "^2.0.0",
+ "jest-expo": "51.0.4",
+ "jest-when": "^3.5.2",
+ "react-compiler-runtime": "file:./lib/react-compiler-runtime",
+ "semver": "7.5.2",
+ "xlsx": "file:vendor/xlsx-0.20.3.tgz",
"@actions/core": "1.10.0",
"@actions/github": "5.1.1",
"@babel/core": "^7.20.0",
@@ -235,7 +239,7 @@
"@types/jest": "^29.5.2",
"@types/jest-when": "^3.5.2",
"@types/js-yaml": "^4.0.5",
- "@types/lodash": "^4.14.195",
+ "@types/lodash-es": "4.17.12",
"@types/mapbox-gl": "^2.7.13",
"@types/mime-db": "^1.43.5",
"@types/node": "^20.11.5",
diff --git a/src/CONST.ts b/src/CONST.ts
index b67f00a6cb50..bd3ea4177e3e 100755
--- a/src/CONST.ts
+++ b/src/CONST.ts
@@ -1153,6 +1153,7 @@ const CONST = {
EXP_ERROR: 666,
UNABLE_TO_RETRY: 'unableToRetry',
UPDATE_REQUIRED: 426,
+ INCORRECT_MAGIC_CODE: 451,
},
HTTP_STATUS: {
// When Cloudflare throttles
@@ -2163,7 +2164,15 @@ const CONST = {
// Often referred to as "collect" workspaces
TEAM: 'team',
},
- FIELD_LIST_TITLE_FIELD_ID: 'text_title',
+ RULE_CONDITIONS: {
+ MATCHES: 'matches',
+ },
+ FIELDS: {
+ TAG: 'tag',
+ CATEGORY: 'category',
+ FIELD_LIST_TITLE: 'text_title',
+ TAX: 'tax',
+ },
DEFAULT_REPORT_NAME_PATTERN: '{report:type} {report:startdate}',
ROLE: {
ADMIN: 'admin',
diff --git a/src/ROUTES.ts b/src/ROUTES.ts
index b36d41eef960..146d35611a72 100644
--- a/src/ROUTES.ts
+++ b/src/ROUTES.ts
@@ -862,6 +862,10 @@ const ROUTES = {
route: 'settings/workspaces/:policyID/tag/:orderWeight/:tagName',
getRoute: (policyID: string, orderWeight: number, tagName: string) => `settings/workspaces/${policyID}/tag/${orderWeight}/${encodeURIComponent(tagName)}` as const,
},
+ WORKSPACE_TAG_APPROVER: {
+ route: 'settings/workspaces/:policyID/tag/:orderWeight/:tagName/approver',
+ getRoute: (policyID: string, orderWeight: number, tagName: string) => `settings/workspaces/${policyID}/tag/${orderWeight}/${tagName}/approver` as const,
+ },
WORKSPACE_TAG_LIST_VIEW: {
route: 'settings/workspaces/:policyID/tag-list/:orderWeight',
getRoute: (policyID: string, orderWeight: number) => `settings/workspaces/${policyID}/tag-list/${orderWeight}` as const,
@@ -1475,6 +1479,14 @@ const ROUTES = {
route: 'settings/workspaces/:policyID/accounting/sage-intacct/export/nonreimbursable',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/sage-intacct/export/nonreimbursable` as const,
},
+ POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_DESTINATION: {
+ route: 'settings/workspaces/:policyID/accounting/sage-intacct/export/reimbursable/destination',
+ getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/sage-intacct/export/reimbursable/destination` as const,
+ },
+ POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_DESTINATION: {
+ route: 'settings/workspaces/:policyID/accounting/sage-intacct/export/nonreimbursable/destination',
+ getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/sage-intacct/export/nonreimbursable/destination` as const,
+ },
POLICY_ACCOUNTING_SAGE_INTACCT_DEFAULT_VENDOR: {
route: 'settings/workspaces/:policyID/accounting/sage-intacct/export/:reimbursable/default-vendor',
getRoute: (policyID: string, reimbursable: string) => `settings/workspaces/${policyID}/accounting/sage-intacct/export/${reimbursable}/default-vendor` as const,
diff --git a/src/SCREENS.ts b/src/SCREENS.ts
index 8ebde068d012..496978677870 100644
--- a/src/SCREENS.ts
+++ b/src/SCREENS.ts
@@ -363,6 +363,8 @@ const SCREENS = {
SAGE_INTACCT_EXPORT_DATE: 'Policy_Accounting_Sage_Intacct_Export_Date',
SAGE_INTACCT_REIMBURSABLE_EXPENSES: 'Policy_Accounting_Sage_Intacct_Reimbursable_Expenses',
SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES: 'Policy_Accounting_Sage_Intacct_Non_Reimbursable_Expenses',
+ SAGE_INTACCT_REIMBURSABLE_DESTINATION: 'Policy_Accounting_Sage_Intacct_Reimbursable_Destination',
+ SAGE_INTACCT_NON_REIMBURSABLE_DESTINATION: 'Policy_Accounting_Sage_Intacct_Non_Reimbursable_Destination',
SAGE_INTACCT_DEFAULT_VENDOR: 'Policy_Accounting_Sage_Intacct_Default_Vendor',
SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT: 'Policy_Accounting_Sage_Intacct_Non_Reimbursable_Credit_Card_Account',
SAGE_INTACCT_ADVANCED: 'Policy_Accounting_Sage_Intacct_Advanced',
@@ -437,6 +439,7 @@ const SCREENS = {
TAX_CREATE: 'Workspace_Tax_Create',
TAG_CREATE: 'Tag_Create',
TAG_SETTINGS: 'Tag_Settings',
+ TAG_APPROVER: 'Tag_Approver',
TAG_LIST_VIEW: 'Tag_List_View',
TAG_GL_CODE: 'Tag_GL_Code',
CURRENCY: 'Workspace_Profile_Currency',
diff --git a/src/components/ConnectionLayout.tsx b/src/components/ConnectionLayout.tsx
index 3809b4f4f110..8646f3ce464a 100644
--- a/src/components/ConnectionLayout.tsx
+++ b/src/components/ConnectionLayout.tsx
@@ -1,4 +1,4 @@
-import {isEmpty} from 'lodash';
+import isEmpty from 'lodash/isEmpty';
import React, {useMemo} from 'react';
import type {StyleProp, TextStyle, ViewStyle} from 'react-native';
import {View} from 'react-native';
diff --git a/src/components/ErrorMessageRow.tsx b/src/components/ErrorMessageRow.tsx
index 2e6e41449274..7137def9a345 100644
--- a/src/components/ErrorMessageRow.tsx
+++ b/src/components/ErrorMessageRow.tsx
@@ -1,4 +1,4 @@
-import {mapValues} from 'lodash';
+import mapValues from 'lodash/mapValues';
import React from 'react';
import type {StyleProp, ViewStyle} from 'react-native';
import type * as OnyxCommon from '@src/types/onyx/OnyxCommon';
diff --git a/src/components/FocusTrap/WIDE_LAYOUT_INACTIVE_SCREENS.ts b/src/components/FocusTrap/WIDE_LAYOUT_INACTIVE_SCREENS.ts
index 686c318a99dc..3d1fcf6fe54c 100644
--- a/src/components/FocusTrap/WIDE_LAYOUT_INACTIVE_SCREENS.ts
+++ b/src/components/FocusTrap/WIDE_LAYOUT_INACTIVE_SCREENS.ts
@@ -38,6 +38,7 @@ const WIDE_LAYOUT_INACTIVE_SCREENS: string[] = [
SCREENS.SEARCH.CENTRAL_PANE,
SCREENS.SETTINGS.TROUBLESHOOT,
SCREENS.SETTINGS.SAVE_THE_WORLD,
+ SCREENS.WORKSPACE.RULES,
];
export default WIDE_LAYOUT_INACTIVE_SCREENS;
diff --git a/src/components/Form/InputWrapper.tsx b/src/components/Form/InputWrapper.tsx
index c966dd4456e9..f54009852b22 100644
--- a/src/components/Form/InputWrapper.tsx
+++ b/src/components/Form/InputWrapper.tsx
@@ -76,10 +76,16 @@ function InputWrapper(p
const {registerInput} = useContext(FormContext);
const {shouldSetTouchedOnBlurOnly, blurOnSubmit, shouldSubmitForm} = computeComponentSpecificRegistrationParams(props as InputComponentBaseProps);
+ const {key, ...registerInputProps} = registerInput(inputID, shouldSubmitForm, {ref, valueType, ...rest, shouldSetTouchedOnBlurOnly, blurOnSubmit});
- // TODO: Sometimes we return too many props with register input, so we need to consider if it's better to make the returned type more general and disregard the issue, or we would like to omit the unused props somehow.
- // eslint-disable-next-line react/jsx-props-no-spreading
- return ;
+ return (
+
+ );
}
InputWrapper.displayName = 'InputWrapper';
diff --git a/src/components/MapView/PendingMapView.tsx b/src/components/MapView/PendingMapView.tsx
index cc9829517154..dc84af0b395e 100644
--- a/src/components/MapView/PendingMapView.tsx
+++ b/src/components/MapView/PendingMapView.tsx
@@ -1,4 +1,4 @@
-import _ from 'lodash';
+import isEmpty from 'lodash/isEmpty';
import React from 'react';
import {View} from 'react-native';
import BlockingView from '@components/BlockingViews/BlockingView';
@@ -10,7 +10,7 @@ import variables from '@styles/variables';
import type {PendingMapViewProps} from './MapViewTypes';
function PendingMapView({title = '', subtitle = '', style, isSmallerIcon = false}: PendingMapViewProps) {
- const hasTextContent = !_.isEmpty(title) || !_.isEmpty(subtitle);
+ const hasTextContent = !isEmpty(title) || !isEmpty(subtitle);
const styles = useThemeStyles();
const theme = useTheme();
const iconSize = isSmallerIcon ? variables.iconSizeSuperLarge : variables.iconSizeUltraLarge;
diff --git a/src/components/MenuItemList.tsx b/src/components/MenuItemList.tsx
index 747e0578a0c4..d33a17f90a5e 100644
--- a/src/components/MenuItemList.tsx
+++ b/src/components/MenuItemList.tsx
@@ -82,16 +82,16 @@ function MenuItemList({
return (
<>
- {menuItems.map((menuItemProps) => (
+ {menuItems.map(({key, ...menuItemProps}) => (
)}
-
- {
- Navigation.navigate(ROUTES.WORSKPACE_CATEGORY_APPROVER.getRoute(policyID, policyCategory.name));
- }}
- shouldShowRightIcon
- disabled={!policy?.areWorkflowsEnabled}
- />
-
- {!policy?.areWorkflowsEnabled && (
+ {
+ Navigation.navigate(ROUTES.WORSKPACE_CATEGORY_APPROVER.getRoute(policyID, policyCategory.name));
+ }}
+ shouldShowRightIcon
+ disabled={approverDisabled}
+ />
+ {approverDisabled && (
{translate('workspace.rules.categoryRules.goTo')}{' '}
)}
{policy?.tax?.trackingEnabled && (
-
- {
- Navigation.navigate(ROUTES.WORSKPACE_CATEGORY_DEFAULT_TAX_RATE.getRoute(policyID, policyCategory.name));
- }}
- shouldShowRightIcon
- />
-
+ {
+ Navigation.navigate(ROUTES.WORSKPACE_CATEGORY_DEFAULT_TAX_RATE.getRoute(policyID, policyCategory.name));
+ }}
+ shouldShowRightIcon
+ />
)}
@@ -333,8 +325,4 @@ function CategorySettingsPage({
CategorySettingsPage.displayName = 'CategorySettingsPage';
-export default withOnyx({
- policyCategories: {
- key: ({route}) => `${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${route.params.policyID}`,
- },
-})(CategorySettingsPage);
+export default CategorySettingsPage;
diff --git a/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx b/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx
index 35ff78adba00..340bd991c609 100644
--- a/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx
+++ b/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx
@@ -8,6 +8,7 @@ import Button from '@components/Button';
import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu';
import type {DropdownOption} from '@components/ButtonWithDropdownMenu/types';
import ConfirmModal from '@components/ConfirmModal';
+import DecisionModal from '@components/DecisionModal';
import EmptyStateComponent from '@components/EmptyStateComponent';
import HeaderWithBackButton from '@components/HeaderWithBackButton';
import * as Expensicons from '@components/Icon/Expensicons';
@@ -55,13 +56,14 @@ type PolicyOption = ListItem & {
type WorkspaceCategoriesPageProps = StackScreenProps;
function WorkspaceCategoriesPage({route}: WorkspaceCategoriesPageProps) {
- const {shouldUseNarrowLayout} = useResponsiveLayout();
+ const {shouldUseNarrowLayout, isSmallScreenWidth} = useResponsiveLayout();
const {windowWidth} = useWindowDimensions();
const styles = useThemeStyles();
const theme = useTheme();
const {translate} = useLocalize();
const [isOfflineModalVisible, setIsOfflineModalVisible] = useState(false);
const [selectedCategories, setSelectedCategories] = useState>({});
+ const [isDownloadFailureModalVisible, setIsDownloadFailureModalVisible] = useState(false);
const [deleteCategoriesConfirmModalVisible, setDeleteCategoriesConfirmModalVisible] = useState(false);
const isFocused = useIsFocused();
const {environmentURL} = useEnvironment();
@@ -311,7 +313,9 @@ function WorkspaceCategoriesPage({route}: WorkspaceCategoriesPageProps) {
Navigation.navigate(ROUTES.WORKSPACE_CATEGORIES_IMPORT.getRoute(policyId));
},
},
- {
+ ];
+ if (hasVisibleCategories) {
+ menuItems.push({
icon: Expensicons.Download,
text: translate('spreadsheet.downloadCSV'),
onSelected: () => {
@@ -319,13 +323,17 @@ function WorkspaceCategoriesPage({route}: WorkspaceCategoriesPageProps) {
Modal.close(() => setIsOfflineModalVisible(true));
return;
}
- Category.downloadCategoriesCSV(policyId);
+ Modal.close(() => {
+ Category.downloadCategoriesCSV(policyId, () => {
+ setIsDownloadFailureModalVisible(true);
+ });
+ });
},
- },
- ];
+ });
+ }
return menuItems;
- }, [policyId, translate, isOffline]);
+ }, [policyId, translate, isOffline, hasVisibleCategories]);
const selectionModeHeader = selectionMode?.isEnabled && shouldUseNarrowLayout;
@@ -418,6 +426,15 @@ function WorkspaceCategoriesPage({route}: WorkspaceCategoriesPageProps) {
confirmText={translate('common.buttonConfirm')}
shouldShowCancelButton={false}
/>
+ setIsDownloadFailureModalVisible(false)}
+ secondOptionText={translate('common.buttonConfirm')}
+ isVisible={isDownloadFailureModalVisible}
+ onClose={() => setIsDownloadFailureModalVisible(false)}
+ />
);
diff --git a/src/pages/workspace/rules/ExpenseReportRulesSection.tsx b/src/pages/workspace/rules/ExpenseReportRulesSection.tsx
index a950567e903e..87bf62cbf7b3 100644
--- a/src/pages/workspace/rules/ExpenseReportRulesSection.tsx
+++ b/src/pages/workspace/rules/ExpenseReportRulesSection.tsx
@@ -63,15 +63,15 @@ function ExpenseReportRulesSection({policyID}: ExpenseReportRulesSectionProps) {
subMenuItems: [
Navigation.navigate(ROUTES.RULES_CUSTOM_NAME.getRoute(policyID))}
@@ -79,8 +79,8 @@ function ExpenseReportRulesSection({policyID}: ExpenseReportRulesSectionProps) {
,
PolicyActions.setPolicyPreventMemberCreatedTitle(policyID, isEnabled)}
/>,
],
diff --git a/src/pages/workspace/rules/RulesCustomNamePage.tsx b/src/pages/workspace/rules/RulesCustomNamePage.tsx
index c32615415755..4a142c01e1da 100644
--- a/src/pages/workspace/rules/RulesCustomNamePage.tsx
+++ b/src/pages/workspace/rules/RulesCustomNamePage.tsx
@@ -40,7 +40,7 @@ function RulesCustomNamePage({route}: RulesCustomNamePageProps) {
translate('workspace.rules.expenseReportRules.customNameTotalExample'),
] as const satisfies string[];
- const customNameDefaultValue = policy?.fieldList?.[CONST.POLICY.FIELD_LIST_TITLE_FIELD_ID].defaultValue;
+ const customNameDefaultValue = policy?.fieldList?.[CONST.POLICY.FIELDS.FIELD_LIST_TITLE].defaultValue;
const validateCustomName = ({customName}: FormOnyxValues) => {
const errors: FormInputErrors = {};
diff --git a/src/pages/workspace/tags/TagApproverPage.tsx b/src/pages/workspace/tags/TagApproverPage.tsx
new file mode 100644
index 000000000000..874754b2cf4b
--- /dev/null
+++ b/src/pages/workspace/tags/TagApproverPage.tsx
@@ -0,0 +1,57 @@
+import type {StackScreenProps} from '@react-navigation/stack';
+import React from 'react';
+import HeaderWithBackButton from '@components/HeaderWithBackButton';
+import ScreenWrapper from '@components/ScreenWrapper';
+import WorkspaceMembersSelectionList from '@components/WorkspaceMembersSelectionList';
+import useLocalize from '@hooks/useLocalize';
+import useThemeStyles from '@hooks/useThemeStyles';
+import Navigation from '@libs/Navigation/Navigation';
+import * as PolicyUtils from '@libs/PolicyUtils';
+import type {SettingsNavigatorParamList} from '@navigation/types';
+import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
+import * as Tag from '@userActions/Policy/Tag';
+import CONST from '@src/CONST';
+import type SCREENS from '@src/SCREENS';
+
+type TagApproverPageProps = StackScreenProps;
+
+function TagApproverPage({route}: TagApproverPageProps) {
+ const {policyID, tagName} = route.params;
+
+ const styles = useThemeStyles();
+ const {translate} = useLocalize();
+
+ const tagApprover = PolicyUtils.getTagApproverRule(policyID, tagName)?.approver;
+
+ return (
+
+
+ Navigation.goBack()}
+ />
+ {
+ Tag.setPolicyTagApprover(policyID, tagName, email);
+ Navigation.setNavigationActionToMicrotaskQueue(Navigation.goBack);
+ }}
+ />
+
+
+ );
+}
+
+TagApproverPage.displayName = 'TagApproverPage';
+
+export default TagApproverPage;
diff --git a/src/pages/workspace/tags/TagSettingsPage.tsx b/src/pages/workspace/tags/TagSettingsPage.tsx
index a0f98ef699ed..6b70b6f636fe 100644
--- a/src/pages/workspace/tags/TagSettingsPage.tsx
+++ b/src/pages/workspace/tags/TagSettingsPage.tsx
@@ -1,8 +1,7 @@
import type {StackScreenProps} from '@react-navigation/stack';
import React, {useEffect, useMemo} from 'react';
import {View} from 'react-native';
-import {withOnyx} from 'react-native-onyx';
-import type {OnyxEntry} from 'react-native-onyx';
+import {useOnyx} from 'react-native-onyx';
import ConfirmModal from '@components/ConfirmModal';
import HeaderWithBackButton from '@components/HeaderWithBackButton';
import * as Expensicons from '@components/Icon/Expensicons';
@@ -12,6 +11,7 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback';
import ScreenWrapper from '@components/ScreenWrapper';
import Switch from '@components/Switch';
import Text from '@components/Text';
+import TextLink from '@components/TextLink';
import useLocalize from '@hooks/useLocalize';
import usePolicy from '@hooks/usePolicy';
import useThemeStyles from '@hooks/useThemeStyles';
@@ -27,73 +27,72 @@ import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
-import type {PolicyTagLists} from '@src/types/onyx';
-type TagSettingsPageOnyxProps = {
- /** All policy tags */
- policyTags: OnyxEntry;
-};
+type TagSettingsPageProps = StackScreenProps;
-type TagSettingsPageProps = TagSettingsPageOnyxProps & StackScreenProps;
-
-function TagSettingsPage({route, policyTags, navigation}: TagSettingsPageProps) {
+function TagSettingsPage({route, navigation}: TagSettingsPageProps) {
+ const [policyTags] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${route.params.policyID}`);
+ const {orderWeight, policyID, tagName} = route.params;
const styles = useThemeStyles();
const {translate} = useLocalize();
- const policyTag = useMemo(() => PolicyUtils.getTagList(policyTags, route.params.orderWeight), [policyTags, route.params.orderWeight]);
- const policy = usePolicy(route.params.policyID);
+ const policyTag = useMemo(() => PolicyUtils.getTagList(policyTags, orderWeight), [policyTags, orderWeight]);
+ const policy = usePolicy(policyID);
const [isDeleteTagModalOpen, setIsDeleteTagModalOpen] = React.useState(false);
- const currentPolicyTag = policyTag.tags[route.params.tagName] ?? Object.values(policyTag.tags ?? {}).find((tag) => tag.previousTagName === route.params.tagName);
+ const currentPolicyTag = policyTag.tags[tagName] ?? Object.values(policyTag.tags ?? {}).find((tag) => tag.previousTagName === tagName);
useEffect(() => {
- if (currentPolicyTag?.name === route.params.tagName || !currentPolicyTag) {
+ if (currentPolicyTag?.name === tagName || !currentPolicyTag) {
return;
}
navigation.setParams({tagName: currentPolicyTag?.name});
- }, [route.params.tagName, currentPolicyTag, navigation]);
+ }, [tagName, currentPolicyTag, navigation]);
if (!currentPolicyTag) {
return ;
}
const deleteTagAndHideModal = () => {
- Tag.deletePolicyTags(route.params.policyID, [currentPolicyTag.name]);
+ Tag.deletePolicyTags(policyID, [currentPolicyTag.name]);
setIsDeleteTagModalOpen(false);
Navigation.goBack();
};
const updateWorkspaceTagEnabled = (value: boolean) => {
- setWorkspaceTagEnabled(route.params.policyID, {[currentPolicyTag.name]: {name: currentPolicyTag.name, enabled: value}}, policyTag.orderWeight);
+ setWorkspaceTagEnabled(policyID, {[currentPolicyTag.name]: {name: currentPolicyTag.name, enabled: value}}, policyTag.orderWeight);
};
const navigateToEditTag = () => {
- Navigation.navigate(ROUTES.WORKSPACE_TAG_EDIT.getRoute(route.params.policyID, route.params.orderWeight, currentPolicyTag.name));
+ Navigation.navigate(ROUTES.WORKSPACE_TAG_EDIT.getRoute(policyID, orderWeight, currentPolicyTag.name));
};
const navigateToEditGlCode = () => {
if (!PolicyUtils.isControlPolicy(policy)) {
Navigation.navigate(
- ROUTES.WORKSPACE_UPGRADE.getRoute(
- route.params.policyID,
- CONST.UPGRADE_FEATURE_INTRO_MAPPING.glCodes.alias,
- ROUTES.WORKSPACE_TAG_GL_CODE.getRoute(policy?.id ?? '', route.params.orderWeight, route.params.tagName),
- ),
+ ROUTES.WORKSPACE_UPGRADE.getRoute(policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.glCodes.alias, ROUTES.WORKSPACE_TAG_GL_CODE.getRoute(policy?.id ?? '', orderWeight, tagName)),
);
return;
}
- Navigation.navigate(ROUTES.WORKSPACE_TAG_GL_CODE.getRoute(route.params.policyID, route.params.orderWeight, currentPolicyTag.name));
+ Navigation.navigate(ROUTES.WORKSPACE_TAG_GL_CODE.getRoute(policyID, orderWeight, currentPolicyTag.name));
+ };
+
+ const navigateToEditTagApprover = () => {
+ Navigation.navigate(ROUTES.WORKSPACE_TAG_APPROVER.getRoute(policyID, orderWeight, currentPolicyTag.name));
};
const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0;
const isMultiLevelTags = PolicyUtils.isMultiLevelTags(policyTags);
+ const tagApprover = PolicyUtils.getTagApproverRule(policyID, route.params.tagName)?.approver;
const shouldShowDeleteMenuItem = !isThereAnyAccountingConnection && !isMultiLevelTags;
+ const workflowApprovalsUnavailable = PolicyUtils.getWorkflowApprovalsUnavailable(policy);
+ const approverDisabled = !policy?.areWorkflowsEnabled || workflowApprovalsUnavailable;
return (
Tag.clearPolicyTagErrors(route.params.policyID, route.params.tagName, route.params.orderWeight)}
+ onClose={() => Tag.clearPolicyTagErrors(policyID, tagName, orderWeight)}
>
@@ -150,6 +149,34 @@ function TagSettingsPage({route, policyTags, navigation}: TagSettingsPageProps)
shouldShowRightIcon
/>
+
+ {policy?.areRulesEnabled && (
+ <>
+
+ {translate('workspace.tags.tagRules')}
+
+
+ {approverDisabled && (
+
+ {translate('workspace.rules.categoryRules.goTo')}{' '}
+ Navigation.navigate(ROUTES.WORKSPACE_MORE_FEATURES.getRoute(policyID))}
+ >
+ {translate('workspace.common.moreFeatures')}
+ {' '}
+ {translate('workspace.rules.categoryRules.andEnableWorkflows')}
+
+ )}
+ >
+ )}
+
{shouldShowDeleteMenuItem && (
({
- policyTags: {
- key: ({route}) => `${ONYXKEYS.COLLECTION.POLICY_TAGS}${route.params.policyID}`,
- },
-})(TagSettingsPage);
+export default TagSettingsPage;
diff --git a/src/types/onyx/Policy.ts b/src/types/onyx/Policy.ts
index 95a9907526e4..1f1be7e89c20 100644
--- a/src/types/onyx/Policy.ts
+++ b/src/types/onyx/Policy.ts
@@ -1373,10 +1373,10 @@ type PendingJoinRequestPolicy = {
/** Data informing when a given rule should be applied */
type ApplyRulesWhen = {
/** The condition for applying the rule to the workspace */
- condition: 'matches';
+ condition: string;
/** The target field to which the rule is applied */
- field: 'category';
+ field: string;
/** The value of the target field */
value: string;
@@ -1412,9 +1412,6 @@ type ExpenseRule = {
id?: string;
};
-/** The name of the category or tag */
-type CategoryOrTagName = string;
-
/** Model of policy data */
type Policy = OnyxCommon.OnyxValueWithOfflineFeedback<
{
@@ -1686,18 +1683,6 @@ type Policy = OnyxCommon.OnyxValueWithOfflineFeedback<
/** Workspace account ID configured for Expensify Card */
workspaceAccountID?: number;
-
- /** Information about rules being updated */
- pendingRulesUpdates?: Record<
- CategoryOrTagName,
- {
- /** Indicates whether the approval rule is updated for the given category or tag */
- approvalRule: OnyxCommon.PendingAction;
-
- /** Indicates whether the expense rule is updated for the given category or tag */
- expenseRule: OnyxCommon.PendingAction;
- }
- >;
} & Partial,
'addWorkspaceRoom' | keyof ACHAccount | keyof Attributes
>;
diff --git a/tests/unit/NextStepUtilsTest.ts b/tests/unit/NextStepUtilsTest.ts
index 2b915fcfc4f0..7777f04c92d7 100644
--- a/tests/unit/NextStepUtilsTest.ts
+++ b/tests/unit/NextStepUtilsTest.ts
@@ -113,7 +113,12 @@ describe('libs/NextStepUtils', () => {
text: 'Waiting for ',
},
{
- text: `${currentUserEmail}'s`,
+ text: `${currentUserEmail}`,
+ clickToCopyText: `${currentUserEmail}`,
+ type: 'strong',
+ },
+ {
+ text: "'s",
type: 'strong',
},
{
@@ -143,7 +148,12 @@ describe('libs/NextStepUtils', () => {
text: 'Waiting for ',
},
{
- text: `${currentUserEmail}'s`,
+ text: `${currentUserEmail}`,
+ clickToCopyText: `${currentUserEmail}`,
+ type: 'strong',
+ },
+ {
+ text: "'s",
type: 'strong',
},
{
@@ -173,7 +183,12 @@ describe('libs/NextStepUtils', () => {
text: 'Waiting for ',
},
{
- text: `${currentUserEmail}'s`,
+ text: `${currentUserEmail}`,
+ clickToCopyText: `${currentUserEmail}`,
+ type: 'strong',
+ },
+ {
+ text: "'s",
type: 'strong',
},
{
@@ -203,7 +218,12 @@ describe('libs/NextStepUtils', () => {
text: 'Waiting for ',
},
{
- text: `${currentUserEmail}'s`,
+ text: `${currentUserEmail}`,
+ clickToCopyText: `${currentUserEmail}`,
+ type: 'strong',
+ },
+ {
+ text: "'s",
type: 'strong',
},
{
@@ -234,7 +254,12 @@ describe('libs/NextStepUtils', () => {
text: 'Waiting for ',
},
{
- text: `${currentUserEmail}'s`,
+ text: `${currentUserEmail}`,
+ clickToCopyText: `${currentUserEmail}`,
+ type: 'strong',
+ },
+ {
+ text: "'s",
type: 'strong',
},
{
@@ -267,7 +292,12 @@ describe('libs/NextStepUtils', () => {
text: 'Waiting for ',
},
{
- text: `${currentUserEmail}'s`,
+ text: `${currentUserEmail}`,
+ clickToCopyText: `${currentUserEmail}`,
+ type: 'strong',
+ },
+ {
+ text: "'s",
type: 'strong',
},
{
@@ -298,7 +328,12 @@ describe('libs/NextStepUtils', () => {
text: 'Waiting for ',
},
{
- text: `${currentUserEmail}'s`,
+ text: `${currentUserEmail}`,
+ clickToCopyText: `${currentUserEmail}`,
+ type: 'strong',
+ },
+ {
+ text: "'s",
type: 'strong',
},
{