From c013aa52ac419ca3854f9eaa3aecc2589745106e Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Fri, 12 Aug 2022 13:53:40 +0530 Subject: [PATCH 1/2] feat: allow quoted key/values for escaping characters and trail/lead whitespaces in raw key value pairs (#2578) --- packages/hoppscotch-app/package.json | 2 +- packages/hoppscotch-cli/package.json | 2 +- packages/hoppscotch-data/package.json | 2 +- packages/hoppscotch-data/src/rawKeyValue.ts | 71 +++- packages/hoppscotch-data/src/utils/record.ts | 17 + packages/hoppscotch-js-sandbox/package.json | 2 +- pnpm-lock.yaml | 376 +++++++++++++++---- 7 files changed, 392 insertions(+), 80 deletions(-) create mode 100644 packages/hoppscotch-data/src/utils/record.ts diff --git a/packages/hoppscotch-app/package.json b/packages/hoppscotch-app/package.json index f0ad8b55a..9482c74cb 100644 --- a/packages/hoppscotch-app/package.json +++ b/packages/hoppscotch-app/package.json @@ -58,7 +58,7 @@ "@codemirror/tooltip": "^0.19.16", "@codemirror/view": "^0.19.48", "@hoppscotch/codemirror-lang-graphql": "workspace:^0.2.0", - "@hoppscotch/data": "workspace:^0.4.2", + "@hoppscotch/data": "workspace:^0.4.3", "@hoppscotch/js-sandbox": "workspace:^2.0.0", "@nuxtjs/axios": "^5.13.6", "@nuxtjs/composition-api": "^0.32.0", diff --git a/packages/hoppscotch-cli/package.json b/packages/hoppscotch-cli/package.json index 9da4cd233..4b20666a6 100644 --- a/packages/hoppscotch-cli/package.json +++ b/packages/hoppscotch-cli/package.json @@ -36,7 +36,7 @@ "license": "MIT", "private": false, "devDependencies": { - "@hoppscotch/data": "workspace:^0.4.2", + "@hoppscotch/data": "workspace:^0.4.3", "@hoppscotch/js-sandbox": "workspace:^2.0.0", "@relmify/jest-fp-ts": "^2.0.2", "@swc/core": "^1.2.181", diff --git a/packages/hoppscotch-data/package.json b/packages/hoppscotch-data/package.json index c476368af..9cfc4cd63 100644 --- a/packages/hoppscotch-data/package.json +++ b/packages/hoppscotch-data/package.json @@ -1,6 +1,6 @@ { "name": "@hoppscotch/data", - "version": "0.4.2", + "version": "0.4.3", "description": "Data Types, Validations and Migrations for Hoppscotch Public Data Structures", "main": "dist/index.js", "module": "true", diff --git a/packages/hoppscotch-data/src/rawKeyValue.ts b/packages/hoppscotch-data/src/rawKeyValue.ts index 1e17faf0b..353f5b7aa 100644 --- a/packages/hoppscotch-data/src/rawKeyValue.ts +++ b/packages/hoppscotch-data/src/rawKeyValue.ts @@ -8,6 +8,12 @@ import * as E from "fp-ts/Either" import * as P from "parser-ts/Parser" import * as S from "parser-ts/string" import * as C from "parser-ts/char" +import { recordUpdate } from "./utils/record" + +/** + * Special characters in the Raw Key Value Grammar + */ +const SPECIAL_CHARS = ["#", ":"] as const export type RawKeyValueEntry = { key: string @@ -31,14 +37,31 @@ const stringTakeUntilCharsInclusive = flow( P.chainFirst(() => P.sat(() => true)), ) +const quotedString = pipe( + S.doubleQuotedString, + P.map((x) => JSON.parse(`"${x}"`)) +) + const key = pipe( - stringTakeUntilChars([":", "\n"]), - P.map(Str.trim) + wsSurround(quotedString), + + P.alt(() => + pipe( + stringTakeUntilChars([":", "\n"]), + P.map(Str.trim) + ) + ) ) const value = pipe( - stringTakeUntilChars(["\n"]), - P.map(Str.trim) + wsSurround(quotedString), + + P.alt(() => + pipe( + stringTakeUntilChars(["\n"]), + P.map(Str.trim) + ) + ) ) const commented = pipe( @@ -105,6 +128,37 @@ const tolerantFile = pipe( /* End of Parser Definitions */ +/** + * Detect whether the string needs to have escape characters in raw key value strings + * @param input The string to check against + */ +const stringNeedsEscapingForRawKVString = (input: string) => { + // If there are any of our special characters, it needs to be escaped definitely + if (SPECIAL_CHARS.some((x) => input.includes(x))) + return true + + // The theory behind this impl is that if we apply JSON.stringify on a string + // it does escaping and then return a JSON string representation. + // We remove the quotes of the JSON and see if it can be matched against the input string + const stringified = JSON.stringify(input) + + const y = stringified + .substring(1, stringified.length - 1) + .trim() + + return y !== input +} + +/** + * Applies Raw Key Value escaping (via quotes + escape chars) if needed + * @param input The input to apply escape on + * @returns If needed, the escaped string, else the input string itself + */ +const applyEscapeIfNeeded = (input: string) => + stringNeedsEscapingForRawKVString(input) + ? JSON.stringify(input) + : input + /** * Converts Raw Key Value Entries to the file string format * @param entries The entries array @@ -113,8 +167,13 @@ const tolerantFile = pipe( export const rawKeyValueEntriesToString = (entries: RawKeyValueEntry[]) => pipe( entries, - A.map(({ key, value, active }) => - active ? `${key}: ${value}` : `# ${key}: ${value}` + A.map( + flow( + recordUpdate("key", applyEscapeIfNeeded), + recordUpdate("value", applyEscapeIfNeeded), + ({ key, value, active }) => + active ? `${(key)}: ${value}` : `# ${key}: ${value}` + ) ), stringArrayJoin("\n") ) diff --git a/packages/hoppscotch-data/src/utils/record.ts b/packages/hoppscotch-data/src/utils/record.ts new file mode 100644 index 000000000..6db6a1c2a --- /dev/null +++ b/packages/hoppscotch-data/src/utils/record.ts @@ -0,0 +1,17 @@ + +/** + * Modify a record value with a mapping function + * @param name The key to update + * @param func The value to update + * @returns The updated record + */ +export const recordUpdate = + < + X extends {}, + K extends keyof X, + R + >(name: K, func: (input: X[K]) => R) => + (x: X): Omit & { [x in K]: R } => ({ + ...x, + [name]: func(x[name]) + }) diff --git a/packages/hoppscotch-js-sandbox/package.json b/packages/hoppscotch-js-sandbox/package.json index e872bef14..f15e20a5c 100644 --- a/packages/hoppscotch-js-sandbox/package.json +++ b/packages/hoppscotch-js-sandbox/package.json @@ -40,7 +40,7 @@ "author": "Hoppscotch (support@hoppscotch.io)", "license": "MIT", "dependencies": { - "@hoppscotch/data": "workspace:^0.4.2", + "@hoppscotch/data": "workspace:^0.4.3", "fp-ts": "^2.11.10", "lodash": "^4.17.21", "quickjs-emscripten": "^0.15.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d7269935..095a16e64 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,7 +76,7 @@ importers: '@graphql-codegen/urql-introspection': ^2.1.1 '@graphql-typed-document-node/core': ^3.1.1 '@hoppscotch/codemirror-lang-graphql': workspace:^0.2.0 - '@hoppscotch/data': workspace:^0.4.2 + '@hoppscotch/data': workspace:^0.4.3 '@hoppscotch/js-sandbox': workspace:^2.0.0 '@nuxt/types': ^2.15.8 '@nuxt/typescript-build': ^2.1.0 @@ -357,7 +357,7 @@ importers: packages/hoppscotch-cli: specifiers: - '@hoppscotch/data': workspace:^0.4.2 + '@hoppscotch/data': workspace:^0.4.3 '@hoppscotch/js-sandbox': workspace:^2.0.0 '@relmify/jest-fp-ts': ^2.0.2 '@swc/core': ^1.2.181 @@ -427,7 +427,7 @@ importers: packages/hoppscotch-js-sandbox: specifiers: '@digitak/esrun': ^3.1.2 - '@hoppscotch/data': workspace:^0.4.2 + '@hoppscotch/data': workspace:^0.4.3 '@relmify/jest-fp-ts': ^2.0.1 '@types/jest': ^27.4.1 '@types/lodash': ^4.14.181 @@ -539,6 +539,13 @@ packages: dependencies: '@babel/highlight': 7.17.9 + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + /@babel/compat-data/7.16.0: resolution: {integrity: sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==} engines: {node: '>=6.9.0'} @@ -556,6 +563,11 @@ packages: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} engines: {node: '>=6.9.0'} + /@babel/compat-data/7.18.8: + resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core/7.17.9: resolution: {integrity: sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==} engines: {node: '>=6.9.0'} @@ -578,6 +590,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core/7.18.10: + resolution: {integrity: sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.1.2 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.12 + '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10 + '@babel/helper-module-transforms': 7.18.9 + '@babel/helpers': 7.18.9 + '@babel/parser': 7.18.11 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.11 + '@babel/types': 7.18.10 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator/7.16.5: resolution: {integrity: sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==} engines: {node: '>=6.9.0'} @@ -594,6 +629,15 @@ packages: jsesc: 2.5.2 source-map: 0.5.7 + /@babel/generator/7.18.12: + resolution: {integrity: sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.10 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure/7.16.7: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} engines: {node: '>=6.9.0'} @@ -631,6 +675,19 @@ packages: browserslist: 4.20.2 semver: 6.3.0 + /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.10: + resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.18.8 + '@babel/core': 7.18.10 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.20.2 + semver: 6.3.0 + dev: true + /@babel/helper-create-class-features-plugin/7.16.10_@babel+core@7.17.9: resolution: {integrity: sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==} engines: {node: '>=6.9.0'} @@ -716,6 +773,11 @@ packages: dependencies: '@babel/types': 7.17.0 + /@babel/helper-environment-visitor/7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-explode-assignable-expression/7.16.7: resolution: {integrity: sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==} engines: {node: '>=6.9.0'} @@ -745,6 +807,14 @@ packages: '@babel/template': 7.16.7 '@babel/types': 7.17.0 + /@babel/helper-function-name/7.18.9: + resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.10 + '@babel/types': 7.18.10 + dev: true + /@babel/helper-get-function-arity/7.16.0: resolution: {integrity: sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==} engines: {node: '>=6.9.0'} @@ -769,6 +839,13 @@ packages: dependencies: '@babel/types': 7.17.0 + /@babel/helper-hoist-variables/7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.10 + dev: true + /@babel/helper-member-expression-to-functions/7.16.7: resolution: {integrity: sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==} engines: {node: '>=6.9.0'} @@ -788,6 +865,13 @@ packages: dependencies: '@babel/types': 7.17.0 + /@babel/helper-module-imports/7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.10 + dev: true + /@babel/helper-module-transforms/7.16.7: resolution: {integrity: sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==} engines: {node: '>=6.9.0'} @@ -818,6 +902,22 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms/7.18.9: + resolution: {integrity: sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.18.6 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.11 + '@babel/types': 7.18.10 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-optimise-call-expression/7.16.7: resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} engines: {node: '>=6.9.0'} @@ -862,6 +962,13 @@ packages: dependencies: '@babel/types': 7.17.0 + /@babel/helper-simple-access/7.18.6: + resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.10 + dev: true + /@babel/helper-skip-transparent-expression-wrappers/7.16.0: resolution: {integrity: sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==} engines: {node: '>=6.9.0'} @@ -880,14 +987,36 @@ packages: dependencies: '@babel/types': 7.17.0 + /@babel/helper-split-export-declaration/7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.10 + dev: true + + /@babel/helper-string-parser/7.18.10: + resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier/7.18.6: + resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-option/7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option/7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-wrap-function/7.16.8: resolution: {integrity: sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==} engines: {node: '>=6.9.0'} @@ -909,6 +1038,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers/7.18.9: + resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.11 + '@babel/types': 7.18.10 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight/7.17.9: resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} engines: {node: '>=6.9.0'} @@ -917,6 +1057,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.18.6 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + /@babel/parser/7.16.2: resolution: {integrity: sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==} engines: {node: '>=6.0.0'} @@ -940,6 +1089,14 @@ packages: dependencies: '@babel/types': 7.17.0 + /@babel/parser/7.18.11: + resolution: {integrity: sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.10 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.17.9: resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} engines: {node: '>=6.9.0'} @@ -1844,8 +2001,8 @@ packages: dependencies: regenerator-runtime: 0.13.9 - /@babel/standalone/7.17.9: - resolution: {integrity: sha512-9wL9AtDlga8avxUrBvQJmhUtJWrelsUL0uV+TcP+49Sb6Pj8/bNIzQzU4dDp0NAPOvnZR/7msFIKsKoCl/W1/w==} + /@babel/standalone/7.18.12: + resolution: {integrity: sha512-wDh3K5IUJiSMAY0MLYBFoCaj2RCZwvDz5BHn2uHat9KOsGWEVDFgFQFIOO+81Js2phFKNppLC45iOCsZVfJniw==} engines: {node: '>=6.9.0'} dev: true @@ -1863,6 +2020,15 @@ packages: debug: 4.3.3 globals: 11.12.0 + /@babel/template/7.18.10: + resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 + dev: true + /@babel/traverse/7.17.3: resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} engines: {node: '>=6.9.0'} @@ -1898,6 +2064,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse/7.18.11: + resolution: {integrity: sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.12 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.18.9 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types/7.16.0: resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} engines: {node: '>=6.9.0'} @@ -1920,6 +2104,15 @@ packages: '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 + /@babel/types/7.18.10: + resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.18.6 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -3715,13 +3908,34 @@ packages: chalk: 4.1.2 dev: true + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.11 + '@jridgewell/trace-mapping': 0.3.15 + dev: true + /@jridgewell/resolve-uri/3.0.5: resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} engines: {node: '>=6.0.0'} + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/sourcemap-codec/1.4.11: resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} + /@jridgewell/trace-mapping/0.3.15: + resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} + dependencies: + '@jridgewell/resolve-uri': 3.0.5 + '@jridgewell/sourcemap-codec': 1.4.11 + dev: true + /@jridgewell/trace-mapping/0.3.4: resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} dependencies: @@ -4028,12 +4242,12 @@ packages: ufo: 0.7.11 dev: false - /@nuxt/kit-edge/3.0.0-rc.4-27605536.8c2c80e: - resolution: {integrity: sha512-Fu9ygT3Gi5zbthzZC5PVzaDhVUxLunF1mgfF9b7RoHaO+UoQSWI7AptRwx2jxkUHpftLZjELtDV6MW96xZiWqg==} + /@nuxt/kit-edge/3.0.0-rc.7-27670958.b0bf25c: + resolution: {integrity: sha512-4sbICutKR7fOgnva7M6QBdwwDkMFULgaTafZ1oen+av+LTsOJVdNruPjlEKLhn/6gfLmxT3cLuY61jhTz4qP7A==} engines: {node: ^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0} dependencies: - '@nuxt/schema': /@nuxt/schema-edge/3.0.0-rc.4-27605536.8c2c80e - c12: 0.2.7 + '@nuxt/schema': /@nuxt/schema-edge/3.0.0-rc.7-27670958.b0bf25c + c12: 0.2.9 consola: 2.15.3 defu: 6.0.0 globby: 13.1.2 @@ -4042,14 +4256,14 @@ packages: jiti: 1.14.0 knitwork: 0.1.2 lodash.template: 4.5.0 - mlly: 0.5.3 - pathe: 0.3.0 + mlly: 0.5.10 + pathe: 0.3.4 pkg-types: 0.3.3 - scule: 0.2.1 + scule: 0.3.2 semver: 7.3.7 - unctx: 1.1.4 - unimport: 0.3.0 - untyped: 0.4.4 + unctx: 2.0.1 + unimport: 0.6.7 + untyped: 0.4.5 transitivePeerDependencies: - esbuild - rollup @@ -4082,20 +4296,20 @@ packages: - encoding dev: false - /@nuxt/schema-edge/3.0.0-rc.4-27605536.8c2c80e: - resolution: {integrity: sha512-KOFpjN2efx9lXj84kSHhJV/XWJ8n0zztnJjjmEY3RhgBTd7mYtdI7BsYPtZ30Tz5vJGMlHrIGkLZW6c+IYAKzw==} + /@nuxt/schema-edge/3.0.0-rc.7-27670958.b0bf25c: + resolution: {integrity: sha512-GwZWyVPqpFWNDsPx1zwczv4DIv2ync/0xTTsec8Rnbg14W83apS9vw2GppHpcDAH7R3Hx8a8pHpeg7nPyD9uCg==} engines: {node: ^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0} dependencies: - c12: 0.2.7 + c12: 0.2.9 create-require: 1.1.1 defu: 6.0.0 jiti: 1.14.0 - pathe: 0.3.0 + pathe: 0.3.4 postcss-import-resolver: 2.0.0 - scule: 0.2.1 + scule: 0.3.2 std-env: 3.1.1 - ufo: 0.8.4 - unimport: 0.3.0 + ufo: 0.8.5 + unimport: 0.6.7 transitivePeerDependencies: - esbuild - rollup @@ -6515,6 +6729,12 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /after/0.8.2: resolution: {integrity: sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=} dev: false @@ -7496,15 +7716,15 @@ packages: engines: {node: '>= 0.8'} dev: false - /c12/0.2.7: - resolution: {integrity: sha512-ih1nuHbZ6Ltf8Wss96JH6YvKIW5+9+uLAA08LUQAoDrFPGSyvPvQv/QBIRE+dCBWOK4PcwH0ylRkSa9huI1Acw==} + /c12/0.2.9: + resolution: {integrity: sha512-6jYdexgAKr+3kYoTmvC5eDtDHUg7GmFQSdeQqZzAKiPlFAN1heGUoXDbAYYwUCfefZy+WgVJbmAej5TTQpp3jA==} dependencies: defu: 6.0.0 - dotenv: 16.0.0 + dotenv: 16.0.1 gittar: 0.1.1 jiti: 1.14.0 - mlly: 0.5.3 - pathe: 0.2.0 + mlly: 0.5.10 + pathe: 0.3.4 rc9: 1.2.2 dev: true @@ -8250,7 +8470,7 @@ packages: lodash: ^4.17.20 marko: ^3.14.4 mote: ^0.2.0 - mustache: ^4.0.1 + mustache: ^3.0.0 nunjucks: ^3.2.2 plates: ~0.4.11 pug: ^3.0.0 @@ -9376,8 +9596,8 @@ packages: engines: {node: '>=10'} dev: true - /dotenv/16.0.0: - resolution: {integrity: sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==} + /dotenv/16.0.1: + resolution: {integrity: sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==} engines: {node: '>=12'} dev: true @@ -10272,6 +10492,10 @@ packages: /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + /estree-walker/3.0.1: + resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} + dev: true + /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -13632,8 +13856,8 @@ packages: emojis-list: 3.0.0 json5: 2.2.1 - /local-pkg/0.4.1: - resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} + /local-pkg/0.4.2: + resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} engines: {node: '>=14'} dev: true @@ -14329,11 +14553,13 @@ packages: engines: {node: '>=10'} hasBin: true - /mlly/0.5.3: - resolution: {integrity: sha512-im69tuLD9EJh9fc9TZRpJEFvsBcGMez7glUCWDcHWWCKzhvPmNvyaYjp/+h0qJJN/Xovrs//GzGjOOKmFw4Gog==} + /mlly/0.5.10: + resolution: {integrity: sha512-mY6i+bwcgn0XAdZTiiBt6kyoUjLsm3Cuv0T4CchQJcq/UCSUcGPapSxc4g7whtIsUfcsJ2kGqZAdmqCF/VNC/Q==} dependencies: - pathe: 0.2.0 + acorn: 8.8.0 + pathe: 0.3.4 pkg-types: 0.3.3 + ufo: 0.8.5 dev: true /mocha/9.2.2: @@ -14707,7 +14933,7 @@ packages: /nuxt-windicss/2.2.11: resolution: {integrity: sha512-xobq725D6vqpIgYOrLJ6CVlR4xLlFGwuq//gZikXKOdoVRpoK8C+NpHazPd4+f17urGQ4H0LqGBCIujTvV1V0g==} dependencies: - '@nuxt/kit': /@nuxt/kit-edge/3.0.0-rc.4-27605536.8c2c80e + '@nuxt/kit': /@nuxt/kit-edge/3.0.0-rc.7-27670958.b0bf25c '@windicss/plugin-utils': 1.8.4 consola: 2.15.3 defu: 6.0.0 @@ -15285,8 +15511,8 @@ packages: resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} dev: true - /pathe/0.3.0: - resolution: {integrity: sha512-3vUjp552BJzCw9vqKsO5sttHkbYqqsZtH0x1PNtItgqx8BXEXzoY1SYRKcL6BTyVh4lGJGLj0tM42elUDMvcYA==} + /pathe/0.3.4: + resolution: {integrity: sha512-YWgqEdxf36R6vcsyj0A+yT/rDRPe0wui4J9gRR7T4whjU5Lx/jZOr75ckEgTNaLVQABAwsrlzHRpIKcCdXAQ5A==} dev: true /pause-stream/0.0.11: @@ -15383,8 +15609,8 @@ packages: resolution: {integrity: sha512-6AJcCMnjUQPQv/Wk960w0TOmjhdjbeaQJoSKWRQv9N3rgkessCu6J0Ydsog/nw1MbpnxHuPzYbfOn2KmlZO1FA==} dependencies: jsonc-parser: 3.0.0 - mlly: 0.5.3 - pathe: 0.3.0 + mlly: 0.5.10 + pathe: 0.3.4 dev: true /pluralize/8.0.0: @@ -17120,6 +17346,11 @@ packages: /scule/0.2.1: resolution: {integrity: sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==} + dev: false + + /scule/0.3.2: + resolution: {integrity: sha512-zIvPdjOH8fv8CgrPT5eqtxHQXmPNnV/vHJYffZhE43KZkvULvpCTvOt1HPlFaCZx287INL9qaqrZg34e8NgI4g==} + dev: true /selenium-webdriver/4.0.0-rc-1: resolution: {integrity: sha512-bcrwFPRax8fifRP60p7xkWDGSJJoMkPAzufMlk5K2NyLPht/YZzR2WcIk1+3gR8VOCLlst1P2PI+MXACaFzpIw==} @@ -17934,7 +18165,7 @@ packages: /strip-literal/0.4.0: resolution: {integrity: sha512-ql/sBDoJOybTKSIOWrrh8kgUEMjXMwRAkZTD0EwiwxQH/6tTPkZvMIEjp0CRlpi6V5FMiJyvxeRkEi1KrGISoA==} dependencies: - acorn: 8.7.1 + acorn: 8.8.0 dev: true /style-mod/4.0.0: @@ -19039,8 +19270,8 @@ packages: /ufo/0.8.3: resolution: {integrity: sha512-AIkk06G21y/P+NCatfU+1qldCmI0XCszZLn8AkuKotffF3eqCvlce0KuwM7ZemLE/my0GSYADOAeM5zDYWMB+A==} - /ufo/0.8.4: - resolution: {integrity: sha512-/+BmBDe8GvlB2nIflWasLLAInjYG0bC9HRnfEpNi4sw77J2AJNnEVnTDReVrehoh825+Q/evF3THXTAweyam2g==} + /ufo/0.8.5: + resolution: {integrity: sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==} dev: true /uglify-js/3.14.3: @@ -19062,13 +19293,13 @@ packages: engines: {node: '>=0.10.0'} dev: true - /unctx/1.1.4: - resolution: {integrity: sha512-fQMML+GjUpIjQa0HBrrJezo2dFpTAbQbU0/KFKw4T5wpc9deGjLHSYthdfNAo2xSWM34csI6arzedezQkqtfGw==} + /unctx/2.0.1: + resolution: {integrity: sha512-4VkJKSG+lh1yYkvdI0Xd3Gm7y7PU6F0mG5SoJqCI1j2jtIaHvTLAdBfbhDjbHxT93BsRkzcaxaeBtu8W/mX1Sg==} dependencies: - acorn: 8.7.1 - estree-walker: 2.0.2 + acorn: 8.8.0 + estree-walker: 3.0.1 magic-string: 0.26.2 - unplugin: 0.6.3 + unplugin: 0.8.1 transitivePeerDependencies: - esbuild - rollup @@ -19113,19 +19344,19 @@ packages: engines: {node: '>= 0.4.12'} dev: true - /unimport/0.3.0: - resolution: {integrity: sha512-RxvfvKBY+CyBmIuYSuBeosSiudgcVakdhVofy5mO5sJ3purQRc5yjLw0Lir7MKHnqe6XT1++8flgAvpxu1UkqQ==} + /unimport/0.6.7: + resolution: {integrity: sha512-EMoVqDjswHkU+nD098QYHXH7Mkw7KwGDQAyeRF2lgairJnuO+wpkhIcmCqrD1OPJmsjkTbJ2tW6Ap8St0PuWZA==} dependencies: '@rollup/pluginutils': 4.2.1 escape-string-regexp: 5.0.0 fast-glob: 3.2.11 - local-pkg: 0.4.1 + local-pkg: 0.4.2 magic-string: 0.26.2 - mlly: 0.5.3 - pathe: 0.3.0 - scule: 0.2.1 + mlly: 0.5.10 + pathe: 0.3.4 + scule: 0.3.2 strip-literal: 0.4.0 - unplugin: 0.7.0 + unplugin: 0.9.0 transitivePeerDependencies: - esbuild - rollup @@ -19236,12 +19467,12 @@ packages: webpack-virtual-modules: 0.4.3 dev: false - /unplugin/0.6.3: - resolution: {integrity: sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A==} + /unplugin/0.8.1: + resolution: {integrity: sha512-o7rUZoPLG1fH4LKinWgb77gDtTE6mw/iry0Pq0Z5UPvZ9+HZ1/4+7fic7t58s8/CGkPrDpGq+RltO+DmswcR4g==} peerDependencies: esbuild: '>=0.13' rollup: ^2.50.0 - vite: ^2.3.0 + vite: ^2.3.0 || ^3.0.0-0 webpack: 4 || 5 peerDependenciesMeta: esbuild: @@ -19253,17 +19484,18 @@ packages: webpack: optional: true dependencies: + acorn: 8.8.0 chokidar: 3.5.3 webpack-sources: 3.2.3 - webpack-virtual-modules: 0.4.3 + webpack-virtual-modules: 0.4.4 dev: true - /unplugin/0.7.0: - resolution: {integrity: sha512-OsiFrgybmqm5bGuaodvbLYhqUrvGuRHRMZDhddKEXTDbuQ1x+hR7M1WpQguXj03whVYjEYChhFo738cZH5RNig==} + /unplugin/0.9.0: + resolution: {integrity: sha512-6o7q8Y9yxdPi5yCPmRuFfeNnVzGumRNZSK6hIkvZ6hd0cfigVdm0qBx/GgQ/NEjs54eUV1qTjvMYKRs9yh3rzw==} peerDependencies: esbuild: '>=0.13' rollup: ^2.50.0 - vite: ^2.3.0 + vite: ^2.3.0 || ^3.0.0-0 webpack: 4 || 5 peerDependenciesMeta: esbuild: @@ -19275,10 +19507,10 @@ packages: webpack: optional: true dependencies: - acorn: 8.7.1 + acorn: 8.8.0 chokidar: 3.5.3 webpack-sources: 3.2.3 - webpack-virtual-modules: 0.4.3 + webpack-virtual-modules: 0.4.4 dev: true /unquote/1.1.1: @@ -19291,13 +19523,13 @@ packages: has-value: 0.3.1 isobject: 3.0.1 - /untyped/0.4.4: - resolution: {integrity: sha512-sY6u8RedwfLfBis0copfU/fzROieyAndqPs8Kn2PfyzTjtA88vCk81J1b5z+8/VJc+cwfGy23/AqOCpvAbkNVw==} + /untyped/0.4.5: + resolution: {integrity: sha512-buq9URfOj4xAnVfu6BYNKzHZLHAzsCbHsDc/kHy66ESMqRpj00oD9qWf2M2qm0pC0DigsVxRF3uhOa5HJtrwGA==} dependencies: - '@babel/core': 7.17.9 - '@babel/standalone': 7.17.9 - '@babel/types': 7.17.0 - scule: 0.2.1 + '@babel/core': 7.18.10 + '@babel/standalone': 7.18.12 + '@babel/types': 7.18.10 + scule: 0.3.2 transitivePeerDependencies: - supports-color dev: true @@ -19924,6 +20156,10 @@ packages: /webpack-virtual-modules/0.4.3: resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==} + /webpack-virtual-modules/0.4.4: + resolution: {integrity: sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==} + dev: true + /webpack/4.46.0: resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} engines: {node: '>=6.11.5'} From 6b8ae637477a6dac080ffbffa7ae973b6683e5b0 Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Fri, 12 Aug 2022 13:59:07 +0530 Subject: [PATCH 2/2] fix: wrong pick emission on save request modal for teams requests (fixes #2579) --- .../hoppscotch-app/components/collections/teams/Request.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/hoppscotch-app/components/collections/teams/Request.vue b/packages/hoppscotch-app/components/collections/teams/Request.vue index 8ef25dc74..22dc35046 100644 --- a/packages/hoppscotch-app/components/collections/teams/Request.vue +++ b/packages/hoppscotch-app/components/collections/teams/Request.vue @@ -261,7 +261,7 @@ const active = useReadonlyStream(restSaveContext$, null) const isSelected = computed( () => props.picked && - props.picked.pickedType === "teams-collection" && + props.picked.pickedType === "teams-request" && props.picked.requestID === props.requestIndex ) @@ -312,7 +312,7 @@ const selectRequest = () => { if (props.saveRequest) { emit("select", { picked: { - pickedType: "teams-collection", + pickedType: "teams-request", requestID: props.requestIndex, }, })