From e8dac8e7d0ab626fbb18bce7587a092b80a646cb Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 7 Feb 2023 11:04:16 -0800 Subject: [PATCH 01/70] lightning lookup w/o API v1 --- .vscode/extensions.json | 5 +- doc-assets/highlight.js | 64 +- package-lock.json | 4899 +++++++++++++---- package.json | 26 +- pmd/pmd-version.txt | 2 +- sfdx-project.json | 6 +- .../classes/ActionPlanCreationController.cls | 14 + .../ActionPlansSectionHeaderController.cls | 14 + .../components/APLightningLookup.component | 134 +- .../default/pages/ActionPlanCreation.page | 89 +- .../pages/ActionPlanTemplateCreation.page | 8 +- 11 files changed, 4142 insertions(+), 1119 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 556fbb90..957a5b00 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,5 +1,5 @@ { - "recommendations": [ + "recommendations": [ "salesforce.salesforcedx-vscode", "redhat.vscode-xml", "dbaeumer.vscode-eslint", @@ -7,9 +7,8 @@ "financialforce.lana", "peterweinberg.apexdox-vs-code", "chuckjonas.apex-pmd", - "eg2.vscode-npm-script", "matteopieroni.refresh-npm-packages", "subc4i.sublime-mavensmate-monokai-apex", - "PKief.material-icon-theme" + "pkief.material-icon-theme" ] } diff --git a/doc-assets/highlight.js b/doc-assets/highlight.js index 9491f128..c65744b2 100644 --- a/doc-assets/highlight.js +++ b/doc-assets/highlight.js @@ -1,5 +1,5 @@ /*! - Highlight.js v11.6.0 (git: bed790f3f3) + Highlight.js v11.7.0 (git: 82688fad18) (c) 2006-2022 undefined and other contributors License: BSD-3-Clause */ @@ -299,7 +299,7 @@ e["before:highlightBlock"](Object.assign({block:n.el},n)) }),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{ e["after:highlightBlock"](Object.assign({block:n.el},n))})})(e),r.push(e)} }),n.debugMode=()=>{s=!1},n.safeMode=()=>{s=!0 -},n.versionString="11.6.0",n.regex={concat:m,lookahead:g,either:p,optional:b, +},n.versionString="11.7.0",n.regex={concat:m,lookahead:g,either:p,optional:b, anyNumberOfTimes:u};for(const n in T)"object"==typeof T[n]&&e.exports(T[n]) ;return Object.assign(n,T),n})({});const te=e=>({IMPORTANT:{scope:"meta", begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{ @@ -326,8 +326,9 @@ end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ const t=e[0].length+e.index,a=e.input[t] ;if("<"===a||","===a)return void n.ignoreMatch();let i ;">"===a&&(((e,{after:n})=>{const t="",contains:[{ @@ -402,7 +403,7 @@ begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={ className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},r={ begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(s);const o={begin:/\$\(\(/, +contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(s);const o={begin:/\$?\(\(/, end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] },l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 }),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, @@ -602,7 +603,7 @@ contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{ begin:n.concat(l,"(\\s*\\.\\s*",l,")*",n.lookahead(/\s*=\s*[^#\s]/)), className:"attr",starts:{end:/$/,contains:[a,o,r,i,s,t]}}]}},grmr_java:e=>{ const n=e.regex,t="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",a=t+ue("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/g,2),i={ -keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed"], +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"], literal:["false","true","null"], type:["char","boolean","long","float","int","byte","short","double"], built_in:["super","this"]},r={className:"meta",begin:"@"+t,contains:[{ @@ -759,9 +760,9 @@ begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[], -variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},i={ -className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ -begin:/_(?!_)/,end:/_/,relevance:0}]},r=e.inherit(a,{contains:[] +variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] +},i={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ +begin:/_(?![_\s])/,end:/_/,relevance:0}]},r=e.inherit(a,{contains:[] }),s=e.inherit(i,{contains:[]});a.contains.push(s),i.contains.push(r) ;let o=[n,t];return[a,i,r,s].forEach((e=>{e.contains=e.contains.concat(o) })),o=o.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ @@ -957,19 +958,20 @@ match:[t,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:i},{ match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:r},{begin:"`",end:"`", contains:[{begin:/\\./}]}]}},grmr_ruby:e=>{ const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(a,/(::\w+)*/),r={ -"variable.constant":["__FILE__","__LINE__"], +"variable.constant":["__FILE__","__LINE__","__ENCODING__"], "variable.language":["self","super"], -keyword:["alias","and","attr_accessor","attr_reader","attr_writer","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","include","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield"], -built_in:["proc","lambda"],literal:["true","false","nil"]},s={ -className:"doctag",begin:"@[A-Za-z]+"},o={begin:"#<",end:">" -},l=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^=begin","^=end",{ -contains:[s],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={ -className:"subst",begin:/#\{/,end:/\}/,keywords:r},d={className:"string", -contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ -},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/, -end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{ -begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/, -end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{ +keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"], +built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"], +literal:["true","false","nil"]},s={className:"doctag",begin:"@[A-Za-z]+"},o={ +begin:"#<",end:">"},l=[e.COMMENT("#","$",{contains:[s] +}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10 +}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={className:"subst",begin:/#\{/, +end:/\}/,keywords:r},d={className:"string",contains:[e.BACKSLASH_ESCAPE,c], +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{ +begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{ +begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//, +end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{ +begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{ begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ @@ -984,9 +986,11 @@ begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ begin:"\\b0(_?[0-7])+r?i?\\b"}]},b={variants:[{match:/\(\)/},{ className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0, keywords:r}]},m=[d,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{ -match:[/class\s+/,i]}],scope:{2:"title.class",4:"title.class.inherited"}, -keywords:r},{relevance:0,match:[i,/\.new[ (]/],scope:{1:"title.class"}},{ -relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{ +match:[/\b(class|module)\s+/,i]}],scope:{2:"title.class", +4:"title.class.inherited"},keywords:r},{match:[/(include|extend)\s+/,i],scope:{ +2:"title.class"},keywords:r},{relevance:0,match:[i,/\.new[. (]/],scope:{ +1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{ match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[b]},{ begin:e.IDENT_RE+"::"},{className:"symbol", begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", diff --git a/package-lock.json b/package-lock.json index f6147c4f..bef84433 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,29 +1,29 @@ { "name": "action-plans", - "version": "4.2.1", + "version": "4.3.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "action-plans", - "version": "4.2.1", + "version": "4.3.0", "hasInstallScript": true, "devDependencies": { - "@lwc/eslint-plugin-lwc": "^1.4.0", + "@lwc/eslint-plugin-lwc": "^1.5.1", "@prettier/plugin-xml": "^2.2.0", - "@salesforce/eslint-config-lwc": "^3.3.3", + "@salesforce/eslint-config-lwc": "^3.3.4", "@salesforce/eslint-plugin-lightning": "^1.0.0", - "@salesforce/sfdx-lwc-jest": "^1.1.3", + "@salesforce/sfdx-lwc-jest": "^1.2.1", "auto-changelog": "^2.4.0", - "eslint": "^8.23.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.0.1", + "eslint": "^8.33.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jest": "^27.2.1", "fx": "^20.0.2", - "husky": "^8.0.1", - "lint-staged": "^13.0.3", - "marked": "^4.1.0", - "prettier": "^2.7.1", - "prettier-plugin-apex": "^1.10.0" + "husky": "^8.0.3", + "lint-staged": "^13.1.1", + "marked": "^4.2.12", + "prettier": "^2.8.3", + "prettier-plugin-apex": "^1.12.0" } }, "node_modules/@ampproject/remapping": { @@ -52,9 +52,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", - "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -91,12 +91,12 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz", - "integrity": "sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", "dev": true, "dependencies": { - "eslint-scope": "^5.1.1", + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", "semver": "^6.3.0" }, @@ -109,12 +109,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", - "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.13", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -149,14 +149,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -166,6 +167,21 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", @@ -197,13 +213,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -246,19 +262,19 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -302,12 +318,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -326,18 +342,18 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -353,14 +369,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -381,9 +397,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", - "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -535,6 +551,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -715,33 +732,33 @@ } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", - "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.13", - "@babel/types": "^7.18.13", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -750,13 +767,13 @@ } }, "node_modules/@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -770,15 +787,15 @@ "dev": true }, "node_modules/@eslint/eslintrc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", - "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -803,9 +820,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -857,14 +874,14 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" @@ -892,16 +909,6 @@ "node": "*" } }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1034,6 +1041,7 @@ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.2.tgz", "integrity": "sha512-Fv02ijyhF4D/Wb3DvZO3iBJQz5DnzpJEIDBDbvje8Em099N889tNMUnBw7SalmSuOI+NflNG40RA1iK71kImPw==", "dev": true, + "peer": true, "dependencies": { "@jest/types": "^29.0.2", "@types/node": "*", @@ -1051,6 +1059,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1066,6 +1075,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1082,6 +1092,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1093,13 +1104,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -1109,6 +1122,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1121,6 +1135,7 @@ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.2.tgz", "integrity": "sha512-imP5M6cdpHEOkmcuFYZuM5cTG1DAF7ZlVNCq1+F7kbqme2Jcl+Kh4M78hihM76DJHNkurbv4UVOnejGxBKEmww==", "dev": true, + "peer": true, "dependencies": { "@jest/console": "^29.0.2", "@jest/reporters": "^29.0.2", @@ -1168,6 +1183,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1183,6 +1199,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1199,6 +1216,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1210,13 +1228,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -1226,6 +1246,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1238,6 +1259,7 @@ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", "dev": true, + "peer": true, "dependencies": { "@jest/fake-timers": "^29.0.2", "@jest/types": "^29.0.2", @@ -1253,6 +1275,7 @@ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.2.tgz", "integrity": "sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==", "dev": true, + "peer": true, "dependencies": { "expect": "^29.0.2", "jest-snapshot": "^29.0.2" @@ -1266,6 +1289,7 @@ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.2.tgz", "integrity": "sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==", "dev": true, + "peer": true, "dependencies": { "jest-get-type": "^29.0.0" }, @@ -1278,6 +1302,7 @@ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", "dev": true, + "peer": true, "dependencies": { "@jest/types": "^29.0.2", "@sinonjs/fake-timers": "^9.1.2", @@ -1295,6 +1320,7 @@ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.2.tgz", "integrity": "sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==", "dev": true, + "peer": true, "dependencies": { "@jest/environment": "^29.0.2", "@jest/expect": "^29.0.2", @@ -1310,6 +1336,7 @@ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.2.tgz", "integrity": "sha512-Kr41qejRQHHkCgWHC9YwSe7D5xivqP4XML+PvgwsnRFaykKdNflDUb4+xLXySOU+O/bPkVdFpGzUpVNSJChCrw==", "dev": true, + "peer": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.0.2", @@ -1354,6 +1381,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1369,6 +1397,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1385,6 +1414,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1396,13 +1426,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -1412,6 +1444,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1436,6 +1469,7 @@ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.0.0.tgz", "integrity": "sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==", "dev": true, + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.15", "callsites": "^3.0.0", @@ -1450,6 +1484,7 @@ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.2.tgz", "integrity": "sha512-b5rDc0lLL6Kx73LyCx6370k9uZ8o5UKdCpMS6Za3ke7H9y8PtAU305y6TeghpBmf2In8p/qqi3GpftgzijSsNw==", "dev": true, + "peer": true, "dependencies": { "@jest/console": "^29.0.2", "@jest/types": "^29.0.2", @@ -1465,6 +1500,7 @@ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.2.tgz", "integrity": "sha512-fsyZqHBlXNMv5ZqjQwCuYa2pskXCO0DVxh5aaVCuAtwzHuYEGrhordyEncBLQNuCGQSYgElrEEmS+7wwFnnMKw==", "dev": true, + "peer": true, "dependencies": { "@jest/test-result": "^29.0.2", "graceful-fs": "^4.2.9", @@ -1480,6 +1516,7 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.2.tgz", "integrity": "sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.0.2", @@ -1506,6 +1543,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1521,6 +1559,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1537,6 +1576,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1548,13 +1588,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -1564,6 +1606,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1576,6 +1619,7 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", "dev": true, + "peer": true, "dependencies": { "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", @@ -1593,6 +1637,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1608,6 +1653,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1624,6 +1670,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1635,13 +1682,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@jest/types/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -1651,6 +1700,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1710,6 +1760,7 @@ "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.23.2.tgz", "integrity": "sha512-hO5PKvq8jD5uYHDnOBnRhwNDHlPtUEXVL4VN8eGfXQJNue51mrLwQGCACs5Mme+X2aY302nsyGFiZMuS5Y28Tw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "~7.18.6", "@lwc/errors": "2.23.2", @@ -1725,6 +1776,7 @@ "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.23.2.tgz", "integrity": "sha512-Myj24zhdgJZ6mM95/qEZFkV5Qv2P5Ujd7EKlOmCg1WLmY29O2hHkzrtlLz3+xPo3JmYtCbvbGxsDU1Gr/fL4Cw==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "~7.18.13", "@babel/plugin-proposal-class-properties": "~7.18.6", @@ -1740,7 +1792,8 @@ "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.23.2.tgz", "integrity": "sha512-XEfn3boHv7RLWevOMwKawxFCrs9btbvyi5XaFsclwkrqEBZa+k5px5vyYEsCJozrvz2ddHkhcuZpG7jITPwNKQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@lwc/engine-server": { "version": "2.23.2", @@ -1753,15 +1806,16 @@ "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.23.2.tgz", "integrity": "sha512-rgqdd6aQja4T8ysmt2L1o9Aq+VWCtifcJv1FB/hNs1g2KloxZyZkHtK6Y+Tr4IXdgiH5LaT0L3tiQA3X4vssoQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@lwc/eslint-plugin-lwc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-1.4.0.tgz", - "integrity": "sha512-AgAQGlcCyJvcTE3AHXLjHmw9KSPeiYwg7Nj4czX/8ivn+5W51dRyzF/rSVwfplljA6Eedx67ydo7ezUDeY3Z2g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-1.5.1.tgz", + "integrity": "sha512-Jj27i4oiqYj9sgryhfOD0rdpDMNP+S1EzaTLgZPqO/MQg+hCd4EtcAXzwPFCs+xY9u1zwsztuQalqXhAP4JZ8Q==", "dev": true, "dependencies": { - "minimatch": "^5.1.0" + "minimatch": "^5.1.2" }, "engines": { "node": ">=10.0.0" @@ -1842,9 +1896,9 @@ } }, "node_modules/@lwc/module-resolver": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/module-resolver/-/module-resolver-2.23.2.tgz", - "integrity": "sha512-/0EGjzHIgEBu6Ot+wZpb3pzyP/qLIyCVGKQq0D1alFnBo3dCFVGMA1w0gCGRNn0TElq8fMukUcjr7ST7F/laUg==", + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/module-resolver/-/module-resolver-2.20.6.tgz", + "integrity": "sha512-ZkhIkteAwgETItq3CCiZN4xuDwbB6RaQGWWD2n8108Ms+Epi5+Ma5sptTFZ2eD8WtIFobaFNTPzV8+TjliZy0g==", "dev": true, "dependencies": { "resolve": "~1.22.1" @@ -1854,13 +1908,15 @@ "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.23.2.tgz", "integrity": "sha512-LgPs0RTaNRs382/+G1UpDDfh4F4NDiXhIFvUOJhtastciBJndXKdEN27aFdAVxrs+yCt9fCM5wgKVhyZSiGBrQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@lwc/style-compiler": { "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.23.2.tgz", "integrity": "sha512-cNKn18CRzv1IXDQ+tboUGB/VU8ubmnZ3kpGDyPk1VBUWaUdU9HhSXsl+4z/l8UdvNEEYnR3XqQYVsEnpMFO20w==", "dev": true, + "peer": true, "dependencies": { "@lwc/shared": "2.23.2", "postcss": "~8.4.16", @@ -1873,13 +1929,15 @@ "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.23.2.tgz", "integrity": "sha512-AJk5PFvNtNWHaVVQ4ePlr8+301SmekSF5fd+MifvT3p8sgNCmE7ZlCIsUkgD2qLu/xXLum4451BWBMPgC75r1Q==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@lwc/template-compiler": { "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.23.2.tgz", "integrity": "sha512-on6kRYprRfgKxXUDZNBjvLqp5WFQAOV6HTBx6PqW5j0s18Bz0qlF5w2VAv/2ZSfUtzK9544OC3wku4LZP43B2g==", "dev": true, + "peer": true, "dependencies": { "@lwc/errors": "2.23.2", "@lwc/shared": "2.23.2", @@ -1891,9 +1949,9 @@ } }, "node_modules/@lwc/wire-service": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/wire-service/-/wire-service-2.23.2.tgz", - "integrity": "sha512-by+Uo6mseygZUUv7fdlcjU8FwsXKPvfZOMEf1PXP/iYdhSYAechV4LnrAYgGoGwduRr97860PBw6tp2Bb74FQw==", + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/wire-service/-/wire-service-2.20.6.tgz", + "integrity": "sha512-HDT04MpGeZwl5ZBC4p+21XVjNdsekysThhgn+BYlS2hrabenvcLE+C5JZJSDay44JqoH91TenqVX83OuiYbGSw==", "dev": true }, "node_modules/@medv/blessed": { @@ -1908,6 +1966,15 @@ "node": ">= 8.0.0" } }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1954,15 +2021,15 @@ } }, "node_modules/@salesforce/eslint-config-lwc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@salesforce/eslint-config-lwc/-/eslint-config-lwc-3.3.3.tgz", - "integrity": "sha512-AZyBta7Y9N2IcJ4LbmIXSQzUoPoZ2cvoi75mqS+9QgUJfB7Il/vRj6NlflSOG14gkA4dmxoT7R6siGj2AYQ+PQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@salesforce/eslint-config-lwc/-/eslint-config-lwc-3.3.4.tgz", + "integrity": "sha512-Z+UymAmX80Szs4+PaMTJ/XHX9Rgp5sNv0AggCBJFPT94pAWm3UvjLpya+iE1pDblEOrgu97Js059Y/wMONqBzg==", "dev": true, "dependencies": { - "@babel/core": "~7.18.5", - "@babel/eslint-parser": "~7.18.2", + "@babel/core": "~7.20.5", + "@babel/eslint-parser": "~7.19.1", "eslint-restricted-globals": "~0.2.0", - "semver": "^7.3.7" + "semver": "^7.3.8" }, "engines": { "node": ">=10.0.0" @@ -1975,10 +2042,49 @@ "eslint-plugin-jest": "*" } }, + "node_modules/@salesforce/eslint-config-lwc/node_modules/@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@salesforce/eslint-config-lwc/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@salesforce/eslint-config-lwc/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2000,25 +2106,25 @@ } }, "node_modules/@salesforce/sfdx-lwc-jest": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@salesforce/sfdx-lwc-jest/-/sfdx-lwc-jest-1.1.3.tgz", - "integrity": "sha512-5UCnYC299rI+S7+ES87ZhpcycwnYXmpSy3TpMX+mbgFqrWnMJ62MRNssx2sb+VBQ7/j3T/s/pVlkJyRfZN5Kww==", - "dev": true, - "dependencies": { - "@lwc/compiler": "2.23.2", - "@lwc/engine-dom": "2.23.2", - "@lwc/jest-preset": "^11.5.0", - "@lwc/jest-resolver": "^11.5.0", - "@lwc/jest-serializer": "^11.5.0", - "@lwc/jest-transformer": "^11.5.0", - "@lwc/module-resolver": "2.23.2", - "@lwc/synthetic-shadow": "2.23.2", - "@lwc/wire-service": "2.23.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@salesforce/sfdx-lwc-jest/-/sfdx-lwc-jest-1.2.1.tgz", + "integrity": "sha512-KBntqX81/ICOvA7X+KHos7dp9JGsCBwvNTlTfxaQNt9sYJSwCwjtmKKOrlokRofDIj9uFCCIOP5a0ZYi6Dastg==", + "dev": true, + "dependencies": { + "@lwc/compiler": "2.20.6", + "@lwc/engine-dom": "2.20.6", + "@lwc/jest-preset": "^11.4.0", + "@lwc/jest-resolver": "^11.4.0", + "@lwc/jest-serializer": "^11.4.0", + "@lwc/jest-transformer": "^11.4.0", + "@lwc/module-resolver": "2.20.6", + "@lwc/synthetic-shadow": "2.20.6", + "@lwc/wire-service": "2.20.6", "@salesforce/wire-service-jest-util": "4.0.0", "chalk": "^4.1.2", "fast-glob": "^3.2.10", - "jest": "^29.0.1", - "jest-environment-jsdom": "^29.0.1", + "jest": "^28.1.3", + "jest-environment-jsdom": "^28.1.3", "yargs": "~17.5.1" }, "bin": { @@ -2026,115 +2132,1146 @@ "sfdx-lwc-jest": "bin/sfdx-lwc-jest" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" }, "engines": { - "node": ">=7.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", "dev": true, + "dependencies": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "jest-get-type": "^28.0.2" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@salesforce/wire-service-jest-util": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@salesforce/wire-service-jest-util/-/wire-service-jest-util-4.0.0.tgz", - "integrity": "sha512-YJO/bMq5l6IYIZG6bAqYzzbmZMPCzB2GE2TKGLA1U7B9HpmNHZS7DdDcy154P03dfLSgF+tgVYeklh2HRYGk9g==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", "dev": true, - "peerDependencies": { - "@lwc/engine-dom": "^2.0.0" + "dependencies": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", "dev": true, "dependencies": { - "@hapi/hoek": "^9.0.0" + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", - "dev": true - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true - }, - "node_modules/@sinclair/typebox": { - "version": "0.24.34", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz", - "integrity": "sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/babel-plugin-component": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.20.6.tgz", + "integrity": "sha512-iOzQFfe8gsmUAZoQSLG8k+vZl8bIfipaQXHWmM/sKLOUgxwW6eo4eD9sjRFBb0R/cPtu0t7zdpcXndPcTbPL1A==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "~7.18.6", + "@lwc/errors": "2.20.6", + "@lwc/shared": "2.20.6", + "line-column": "~1.0.2" + }, + "peerDependencies": { + "@babel/core": "^7" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/compiler": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.20.6.tgz", + "integrity": "sha512-xZwi2x0CWvuINNIh1CmP4jtigjLvrRTyK+VQmQOdrmj3fSuT7E847R1zgpY9ZVkk+uuxQioTJfxw2fMxp8CkeQ==", + "dev": true, + "dependencies": { + "@babel/core": "~7.18.9", + "@babel/plugin-proposal-class-properties": "~7.18.6", + "@babel/plugin-proposal-object-rest-spread": "~7.18.9", + "@lwc/babel-plugin-component": "2.20.6", + "@lwc/errors": "2.20.6", + "@lwc/shared": "2.20.6", + "@lwc/style-compiler": "2.20.6", + "@lwc/template-compiler": "2.20.6" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/engine-dom": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.20.6.tgz", + "integrity": "sha512-zx0PdQ0qyJJ+86wSorJrg4cU24Vb9fl5+mhggKHD7hOdey+DiEK5Wp5WcEqaUDWS9I0i3OfX1tw5TphxntOZyw==", + "dev": true + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/errors": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.20.6.tgz", + "integrity": "sha512-GckFh4a+WVzSW7KHURqWBfmfgBGoDlEcjH4KWxGjGrjumgwNBH8h+9AAoOang5lFdWy1rTApIrIr3hl30SKu/Q==", + "dev": true + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/shared": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.20.6.tgz", + "integrity": "sha512-2ZCcUBOUAdOW6dhhixZztAp+Du66YeHVywpU2SBFBQQHt1GSGjAWCv5YvZKcR/Hvon3BwdgBfnds9EArcDyVBw==", + "dev": true + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/style-compiler": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.20.6.tgz", + "integrity": "sha512-Z7ji3SB8JHTSoirbM2JXw9TSK7XfpkG+czD32bWJ6tJrr675rK9b7kIRNVfWSUxD+9cROTbBkQroCeeBH2FWMQ==", + "dev": true, + "dependencies": { + "@lwc/shared": "2.20.6", + "postcss": "~8.4.14", + "postcss-selector-parser": "~6.0.9", + "postcss-value-parser": "~4.2.0", + "string.prototype.matchall": "^4.0.7" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/synthetic-shadow": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.20.6.tgz", + "integrity": "sha512-3c5uq+a9ISJFNbM/1E3UTSlaXspjuqrwDL/PmzD7ad3yoK/ij3L4G1lrtKs2o0lATFHgN900zAscFTEpzeT1Iw==", + "dev": true + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/template-compiler": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.20.6.tgz", + "integrity": "sha512-r61f8pFDSHFx0EoUW58zvzOCZUfP1mjlcoevfURwcE2x7hH/8EjBWQBHhENao56iv4rfQL65MWDcbhc16rg7pA==", + "dev": true, + "dependencies": { + "@lwc/errors": "2.20.6", + "@lwc/shared": "2.20.6", + "acorn": "~8.7.1", + "astring": "~1.8.3", + "estree-walker": "~2.0.2", + "he": "~1.2.0", + "parse5": "~6.0.1" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/babel-plugin-jest-hoist": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", + "dev": true, + "dependencies": { + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", + "import-local": "^3.0.2", + "jest-cli": "^28.1.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-changed-files": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", + "dev": true, + "dependencies": { + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-config/node_modules/babel-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-config/node_modules/babel-preset-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^28.1.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-leak-detector": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-mock": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-resolve": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-resolve-dependencies": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-runner": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "dev": true, + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-runtime": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-snapshot": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-validate": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@salesforce/wire-service-jest-util": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@salesforce/wire-service-jest-util/-/wire-service-jest-util-4.0.0.tgz", + "integrity": "sha512-YJO/bMq5l6IYIZG6bAqYzzbmZMPCzB2GE2TKGLA1U7B9HpmNHZS7DdDcy154P03dfLSgF+tgVYeklh2HRYGk9g==", + "dev": true, + "peerDependencies": { + "@lwc/engine-dom": "^2.0.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.34", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz", + "integrity": "sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, "dependencies": { @@ -2234,26 +3371,14 @@ } }, "node_modules/@types/jsdom": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.0.tgz", - "integrity": "sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==", + "version": "16.2.15", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz", + "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", "dev": true, "dependencies": { "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/jsdom/node_modules/parse5": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz", - "integrity": "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "@types/parse5": "^6.0.3", + "@types/tough-cookie": "*" } }, "node_modules/@types/json-schema": { @@ -2274,6 +3399,12 @@ "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", "dev": true }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, "node_modules/@types/prettier": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", @@ -2593,15 +3724,15 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" }, "engines": { @@ -2621,14 +3752,32 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -2696,13 +3845,27 @@ "node": ">=10" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.2.tgz", + "integrity": "sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-jest": { @@ -2710,6 +3873,7 @@ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.2.tgz", "integrity": "sha512-yTu4/WSi/HzarjQtrJSwV+/0maoNt+iP0DmpvFJdv9yY+5BuNle8TbheHzzcSWj5gIHfuhpbLYHWRDYhWKyeKQ==", "dev": true, + "peer": true, "dependencies": { "@jest/transform": "^29.0.2", "@types/babel__core": "^7.1.14", @@ -2731,6 +3895,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2746,6 +3911,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2762,6 +3928,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2773,13 +3940,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/babel-jest/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -2789,6 +3958,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3277,6 +4447,19 @@ "node": ">=12" } }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -3295,9 +4478,9 @@ } }, "node_modules/decimal.js": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", - "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "node_modules/dedent": { @@ -3360,6 +4543,7 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz", "integrity": "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==", "dev": true, + "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -3430,18 +4614,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -3452,34 +4624,44 @@ } }, "node_modules/es-abstract": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", - "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "dev": true, "dependencies": { + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.2", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", "object-inspect": "^1.12.2", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -3488,6 +4670,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -3615,15 +4811,15 @@ } }, "node_modules/eslint": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", - "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.1", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -3639,15 +4835,15 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -3671,13 +4867,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -3716,23 +4913,25 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "engines": { @@ -3753,12 +4952,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -3785,16 +4984,10 @@ "node": "*" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/eslint-plugin-jest": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.0.1.tgz", - "integrity": "sha512-LosUsrkwVSs/8Z/I8Hqn5vWgTEsHrfIquDEKOsV8/cl+gbFR4tiRCE1AimEotsHjSC0Rx1tYm6vPhw8C3ktmmg==", + "version": "27.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", + "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -3964,9 +5157,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4024,9 +5217,9 @@ } }, "node_modules/espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "dependencies": { "acorn": "^8.8.0", @@ -4165,6 +5358,7 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.2.tgz", "integrity": "sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==", "dev": true, + "peer": true, "dependencies": { "@jest/expect-utils": "^29.0.2", "jest-get-type": "^29.0.0", @@ -4300,9 +5494,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -4319,6 +5513,15 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -4377,12 +5580,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -4500,9 +5697,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -4613,6 +5810,21 @@ "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -4633,6 +5845,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -4708,6 +5932,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -4799,9 +6035,9 @@ } }, "node_modules/husky": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", - "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, "bin": { "husky": "lib/bin.js" @@ -4904,12 +6140,12 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.1.3", "has": "^1.0.3", "side-channel": "^1.0.4" }, @@ -4917,6 +6153,20 @@ "node": ">= 0.4" } }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -4952,9 +6202,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" @@ -4964,9 +6214,9 @@ } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -5068,6 +6318,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -5144,6 +6403,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -5272,6 +6550,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.2.tgz", "integrity": "sha512-enziNbNUmXTcTaTP/Uq5rV91r0Yqy2UKzLUIabxMpGm9YHz8qpbJhiRnNVNvm6vzWfzt/0o97NEHH8/3udoClA==", "dev": true, + "peer": true, "dependencies": { "@jest/core": "^29.0.2", "@jest/types": "^29.0.2", @@ -5298,6 +6577,7 @@ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.0.0.tgz", "integrity": "sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==", "dev": true, + "peer": true, "dependencies": { "execa": "^5.0.0", "p-limit": "^3.1.0" @@ -5311,6 +6591,7 @@ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.2.tgz", "integrity": "sha512-YTPEsoE1P1X0bcyDQi3QIkpt2Wl9om9k2DQRuLFdS5x8VvAKSdYAVJufgvudhnKgM8WHvvAzhBE+1DRQB8x1CQ==", "dev": true, + "peer": true, "dependencies": { "@jest/environment": "^29.0.2", "@jest/expect": "^29.0.2", @@ -5341,6 +6622,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5356,6 +6638,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5372,6 +6655,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5383,13 +6667,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -5399,6 +6685,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5411,6 +6698,7 @@ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.2.tgz", "integrity": "sha512-tlf8b+4KcUbBGr25cywIi3+rbZ4+G+SiG8SvY552m9sRZbXPafdmQRyeVE/C/R8K+TiBAMrTIUmV2SlStRJ40g==", "dev": true, + "peer": true, "dependencies": { "@jest/core": "^29.0.2", "@jest/test-result": "^29.0.2", @@ -5445,6 +6733,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5460,6 +6749,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5476,6 +6766,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5487,13 +6778,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -5503,6 +6796,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5515,6 +6809,7 @@ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.2.tgz", "integrity": "sha512-RU4gzeUNZAFktYVzDGimDxeYoaiTnH100jkYYZgldqFamaZukF0IqmFx8+QrzVeEWccYg10EEJT3ox1Dq5b74w==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.0.2", @@ -5560,6 +6855,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5575,6 +6871,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5591,6 +6888,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5602,13 +6900,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -5618,6 +6918,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5630,6 +6931,7 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.2.tgz", "integrity": "sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==", "dev": true, + "peer": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.0.0", @@ -5645,6 +6947,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5660,6 +6963,112 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.0.0.tgz", + "integrity": "sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.0.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.2.tgz", + "integrity": "sha512-+sA9YjrJl35iCg0W0VCrgCVj+wGhDrrKQ+YAqJ/DHBC4gcDFAeePtRRhpJnX9gvOZ63G7gt52pwp2PesuSEx0Q==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.0.2", + "chalk": "^4.0.0", + "jest-get-type": "^29.0.0", + "jest-util": "^29.0.2", + "pretty-format": "^29.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5671,11 +7080,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/color-convert": { + "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5683,26 +7093,29 @@ "node": ">=7.0.0" } }, - "node_modules/jest-diff/node_modules/color-name": { + "node_modules/jest-each/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, - "node_modules/jest-diff/node_modules/has-flag": { + "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-diff/node_modules/supports-color": { + "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5710,35 +7123,87 @@ "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.0.0.tgz", - "integrity": "sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==", + "node_modules/jest-environment-jsdom": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz", + "integrity": "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==", "dev": true, "dependencies": { - "detect-newline": "^3.0.0" + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/jsdom": "^16.2.4", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3", + "jsdom": "^19.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-each": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.2.tgz", - "integrity": "sha512-+sA9YjrJl35iCg0W0VCrgCVj+wGhDrrKQ+YAqJ/DHBC4gcDFAeePtRRhpJnX9gvOZ63G7gt52pwp2PesuSEx0Q==", + "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", "dev": true, "dependencies": { - "@jest/types": "^29.0.2", - "chalk": "^4.0.0", - "jest-get-type": "^29.0.0", - "jest-util": "^29.0.2", - "pretty-format": "^29.0.2" + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-each/node_modules/ansi-styles": { + "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -5753,7 +7218,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/chalk": { + "node_modules/jest-environment-jsdom/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -5769,7 +7234,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/color-convert": { + "node_modules/jest-environment-jsdom/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -5781,13 +7246,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-each/node_modules/color-name": { + "node_modules/jest-environment-jsdom/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-each/node_modules/has-flag": { + "node_modules/jest-environment-jsdom/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -5796,35 +7261,93 @@ "node": ">=8" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.0.2.tgz", - "integrity": "sha512-hWqC9FQI5yT04lTd4VJnzT5QObxq0xrSrqpGkqsYfxPeJYjyhriI7W2oJC5HZ1UbhnvA+8GS1nzgPsstvRpdVw==", + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", "dev": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/jsdom": "^20.0.0", + "@jest/types": "^28.1.3", + "@types/node": "*" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2", - "jsdom": "^20.0.0" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/jest-environment-node": { @@ -5832,6 +7355,7 @@ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.2.tgz", "integrity": "sha512-4Fv8GXVCToRlMzDO94gvA8iOzKxQ7rhAbs8L+j8GPyTxGuUiYkV+63LecGeVdVhsL2KXih1sKnoqmH6tp89J7Q==", "dev": true, + "peer": true, "dependencies": { "@jest/environment": "^29.0.2", "@jest/fake-timers": "^29.0.2", @@ -5849,6 +7373,7 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", "dev": true, + "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -5858,6 +7383,7 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.2.tgz", "integrity": "sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==", "dev": true, + "peer": true, "dependencies": { "@jest/types": "^29.0.2", "@types/graceful-fs": "^4.1.3", @@ -5883,6 +7409,7 @@ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.2.tgz", "integrity": "sha512-5f0493qDeAxjUldkBSQg5D1cLadRgZVyWpTQvfJeQwQUpHQInE21AyVHVv64M7P2Ue8Z5EZ4BAcoDS/dSPPgMw==", "dev": true, + "peer": true, "dependencies": { "jest-get-type": "^29.0.0", "pretty-format": "^29.0.2" @@ -5896,6 +7423,7 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz", "integrity": "sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==", "dev": true, + "peer": true, "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.0.2", @@ -5911,6 +7439,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5926,6 +7455,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5942,6 +7472,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5953,13 +7484,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -5969,6 +7502,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5981,6 +7515,7 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", "dev": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.0.2", @@ -6001,6 +7536,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6016,6 +7552,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6032,6 +7569,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6043,13 +7581,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6059,6 +7599,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6071,6 +7612,7 @@ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", "dev": true, + "peer": true, "dependencies": { "@jest/types": "^29.0.2", "@types/node": "*" @@ -6101,6 +7643,7 @@ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.0.0.tgz", "integrity": "sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==", "dev": true, + "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -6110,6 +7653,7 @@ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.2.tgz", "integrity": "sha512-V3uLjSA+EHxLtjIDKTBXnY71hyx+8lusCqPXvqzkFO1uCGvVpjBfuOyp+KOLBNSuY61kM2jhepiMwt4eiJS+Vw==", "dev": true, + "peer": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -6130,6 +7674,7 @@ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.2.tgz", "integrity": "sha512-fSAu6eIG7wtGdnPJUkVVdILGzYAP9Dj/4+zvC8BrGe8msaUMJ9JeygU0Hf9+Uor6/icbuuzQn5See1uajLnAqg==", "dev": true, + "peer": true, "dependencies": { "jest-regex-util": "^29.0.0", "jest-snapshot": "^29.0.2" @@ -6143,6 +7688,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6158,6 +7704,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6174,6 +7721,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6185,13 +7733,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6201,6 +7751,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6213,6 +7764,7 @@ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.2.tgz", "integrity": "sha512-+D82iPZejI8t+SfduOO1deahC/QgLFf8aJBO++Znz3l2ETtOMdM7K4ATsGWzCFnTGio5yHaRifg1Su5Ybza5Nw==", "dev": true, + "peer": true, "dependencies": { "@jest/console": "^29.0.2", "@jest/environment": "^29.0.2", @@ -6245,6 +7797,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6260,6 +7813,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6276,6 +7830,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6287,13 +7842,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6303,6 +7860,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6315,6 +7873,7 @@ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.2.tgz", "integrity": "sha512-DO6F81LX4okOgjJLkLySv10E5YcV5NHUbY1ZqAUtofxdQE+q4hjH0P2gNsY8x3z3sqgw7O/+919SU4r18Fcuig==", "dev": true, + "peer": true, "dependencies": { "@jest/environment": "^29.0.2", "@jest/fake-timers": "^29.0.2", @@ -6348,6 +7907,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6363,6 +7923,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6379,6 +7940,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6390,13 +7952,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6406,6 +7970,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6418,6 +7983,7 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.2.tgz", "integrity": "sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -6453,6 +8019,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6468,6 +8035,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6484,6 +8052,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6495,13 +8064,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6511,6 +8082,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "peer": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -6526,6 +8098,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6538,6 +8111,7 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", "dev": true, + "peer": true, "dependencies": { "@jest/types": "^29.0.2", "@types/node": "*", @@ -6555,6 +8129,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6570,6 +8145,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6586,6 +8162,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6597,13 +8174,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6613,6 +8192,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6625,6 +8205,7 @@ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.2.tgz", "integrity": "sha512-AeRKm7cEucSy7tr54r3LhiGIXYvOILUwBM1S7jQkKs6YelwAlWKsmZGVrQR7uwsd31rBTnR5NQkODi1Z+6TKIQ==", "dev": true, + "peer": true, "dependencies": { "@jest/types": "^29.0.2", "camelcase": "^6.2.0", @@ -6642,6 +8223,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6657,6 +8239,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -6669,6 +8252,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6685,6 +8269,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6696,13 +8281,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-validate/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6712,6 +8299,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6724,6 +8312,7 @@ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.2.tgz", "integrity": "sha512-ds2bV0oyUdYoyrUTv4Ga5uptz4cEvmmP/JzqDyzZZanvrIn8ipxg5l3SDOAIiyuAx1VdHd2FBzeXPFO5KPH8vQ==", "dev": true, + "peer": true, "dependencies": { "@jest/test-result": "^29.0.2", "@jest/types": "^29.0.2", @@ -6743,6 +8332,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6758,6 +8348,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6774,6 +8365,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6785,13 +8377,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6801,6 +8395,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6813,6 +8408,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.2.tgz", "integrity": "sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==", "dev": true, + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -6827,6 +8423,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6836,6 +8433,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6847,9 +8445,9 @@ } }, "node_modules/joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0", @@ -6859,6 +8457,16 @@ "@sideway/pinpoint": "^2.0.0" } }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6878,28 +8486,28 @@ } }, "node_modules/jsdom": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.0.tgz", - "integrity": "sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", "dev": true, "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.7.1", + "abab": "^2.0.5", + "acorn": "^8.5.0", "acorn-globals": "^6.0.0", "cssom": "^0.5.0", "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", + "data-urls": "^3.0.1", "decimal.js": "^10.3.1", "domexception": "^4.0.0", "escodegen": "^2.0.0", "form-data": "^4.0.0", "html-encoding-sniffer": "^3.0.0", "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "https-proxy-agent": "^5.0.0", "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.0", - "parse5": "^7.0.0", - "saxes": "^6.0.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", @@ -6907,12 +8515,12 @@ "webidl-conversions": "^7.0.0", "whatwg-encoding": "^2.0.0", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.8.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=12" }, "peerDependencies": { "canvas": "^2.5.0" @@ -6923,18 +8531,6 @@ } } }, - "node_modules/jsdom/node_modules/parse5": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz", - "integrity": "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -6966,9 +8562,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -7009,9 +8605,9 @@ } }, "node_modules/lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true, "engines": { "node": ">=10" @@ -7034,24 +8630,24 @@ "dev": true }, "node_modules/lint-staged": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.3.tgz", - "integrity": "sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.1.tgz", + "integrity": "sha512-LLJLO0Kdbcv2a+CvSF4p1M7jBZOajKSMpBUvyR8+bXccsqPER0/NxTFQSpNHjqwV9kM3tkHczYerTB5wI+bksQ==", "dev": true, "dependencies": { "cli-truncate": "^3.1.0", - "colorette": "^2.0.17", - "commander": "^9.3.0", + "colorette": "^2.0.19", + "commander": "^9.4.1", "debug": "^4.3.4", "execa": "^6.1.0", - "lilconfig": "2.0.5", - "listr2": "^4.0.5", + "lilconfig": "2.0.6", + "listr2": "^5.0.5", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-inspect": "^1.12.2", "pidtree": "^0.6.0", "string-argv": "^0.3.1", - "yaml": "^2.1.1" + "yaml": "^2.1.3" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -7064,9 +8660,9 @@ } }, "node_modules/lint-staged/node_modules/commander": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", - "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "engines": { "node": "^12.20.0 || >=14" @@ -7183,22 +8779,22 @@ } }, "node_modules/listr2": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", - "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", + "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", "dev": true, "dependencies": { "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", + "colorette": "^2.0.19", "log-update": "^4.0.0", "p-map": "^4.0.0", "rfdc": "^1.3.0", - "rxjs": "^7.5.5", + "rxjs": "^7.8.0", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=12" + "node": "^14.13.1 || >=16.0.0" }, "peerDependencies": { "enquirer": ">= 2.3.0 < 3" @@ -7442,9 +9038,9 @@ } }, "node_modules/marked": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", - "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -7512,9 +9108,9 @@ } }, "node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -7677,14 +9273,14 @@ } }, "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -8034,9 +9630,9 @@ } }, "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -8049,41 +9645,29 @@ } }, "node_modules/prettier-plugin-apex": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-apex/-/prettier-plugin-apex-1.10.0.tgz", - "integrity": "sha512-Kh6kMNq5IfCxlP49wsZbt2Pq/dx4zbwbEdjUcP9GCmXfRLGuoa6mrT26kIv8TJnEjFCPVzUjg1u0qa3qBStLmQ==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-apex/-/prettier-plugin-apex-1.12.0.tgz", + "integrity": "sha512-8tnF2Pp5RMoEYipgFudrujlWRlXqags4lJZD7xSgordX+Bsh8Pq1jXPihkkquHKy4PeZMIuJAtYIEOFLBQIv/w==", "dev": true, "dependencies": { - "axios": "^0.21.0", - "jest-docblock": "^27.0.1", - "wait-on": "^5.2.1", + "axios": "^1.0.0", + "jest-docblock": "^29.0.0", + "wait-on": "^6.0.0", "yargs": "^17.0.0" }, "bin": { "apex-ast-serializer": "vendor/apex-ast-serializer/bin/apex-ast-serializer", "apex-ast-serializer-http": "vendor/apex-ast-serializer/bin/apex-ast-serializer-http", - "start-apex-server": "bin/start-apex-server.js", - "stop-apex-server": "bin/stop-apex-server.js" + "start-apex-server": "dist/bin/start-apex-server.js", + "stop-apex-server": "dist/bin/stop-apex-server.js" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14.0.0" }, "peerDependencies": { "prettier": "^2.0.0" } }, - "node_modules/prettier-plugin-apex/node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/pretty-format": { "version": "29.0.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", @@ -8123,6 +9707,12 @@ "node": ">= 6" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -8130,9 +9720,9 @@ "dev": true }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" @@ -8344,9 +9934,9 @@ } }, "node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -8358,6 +9948,20 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -8365,15 +9969,15 @@ "dev": true }, "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, "dependencies": { "xmlchars": "^2.2.0" }, "engines": { - "node": ">=v12.22.7" + "node": ">=10" } }, "node_modules/semver": { @@ -8589,28 +10193,28 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8853,9 +10457,9 @@ } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -8874,9 +10478,9 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, "node_modules/tsutils": { @@ -8933,6 +10537,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "4.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", @@ -9053,6 +10671,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, "dependencies": { "browser-process-hrtime": "^1.0.0" @@ -9071,42 +10690,33 @@ } }, "node_modules/wait-on": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", - "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", "dev": true, "dependencies": { - "axios": "^0.21.1", - "joi": "^17.3.0", + "axios": "^0.25.0", + "joi": "^17.6.0", "lodash": "^4.17.21", "minimist": "^1.2.5", - "rxjs": "^6.6.3" + "rxjs": "^7.5.4" }, "bin": { "wait-on": "bin/wait-on" }, "engines": { - "node": ">=8.9.0" + "node": ">=10.0.0" } }, - "node_modules/wait-on/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "node_modules/wait-on/node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", "dev": true, "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" + "follow-redirects": "^1.14.7" } }, - "node_modules/wait-on/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -9147,9 +10757,9 @@ } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", "dev": true, "dependencies": { "tr46": "^3.0.0", @@ -9190,6 +10800,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -9275,16 +10905,16 @@ } }, "node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9326,9 +10956,9 @@ "dev": true }, "node_modules/yaml": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", - "integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true, "engines": { "node": ">= 14" @@ -9395,9 +11025,9 @@ } }, "@babel/compat-data": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", - "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", "dev": true }, "@babel/core": { @@ -9424,23 +11054,23 @@ } }, "@babel/eslint-parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz", - "integrity": "sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", "dev": true, "requires": { - "eslint-scope": "^5.1.1", + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", "semver": "^6.3.0" } }, "@babel/generator": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", - "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", "dev": true, "requires": { - "@babel/types": "^7.18.13", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -9468,15 +11098,33 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, "@babel/helper-create-class-features-plugin": { @@ -9501,13 +11149,13 @@ "dev": true }, "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { @@ -9538,19 +11186,19 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" } }, "@babel/helper-optimise-call-expression": { @@ -9582,12 +11230,12 @@ } }, "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" } }, "@babel/helper-split-export-declaration": { @@ -9600,15 +11248,15 @@ } }, "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { @@ -9618,14 +11266,14 @@ "dev": true }, "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" } }, "@babel/highlight": { @@ -9640,9 +11288,9 @@ } }, "@babel/parser": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", - "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "dev": true }, "@babel/plugin-proposal-class-properties": { @@ -9746,6 +11394,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -9866,42 +11515,42 @@ } }, "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/traverse": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", - "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.13", - "@babel/types": "^7.18.13", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -9912,15 +11561,15 @@ "dev": true }, "@eslint/eslintrc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", - "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -9939,9 +11588,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -9980,14 +11629,14 @@ } }, "@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "dependencies": { "brace-expansion": { @@ -10011,12 +11660,6 @@ } } }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true - }, "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -10117,6 +11760,7 @@ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.2.tgz", "integrity": "sha512-Fv02ijyhF4D/Wb3DvZO3iBJQz5DnzpJEIDBDbvje8Em099N889tNMUnBw7SalmSuOI+NflNG40RA1iK71kImPw==", "dev": true, + "peer": true, "requires": { "@jest/types": "^29.0.2", "@types/node": "*", @@ -10131,6 +11775,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -10140,6 +11785,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10150,6 +11796,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10158,19 +11805,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -10182,6 +11832,7 @@ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.2.tgz", "integrity": "sha512-imP5M6cdpHEOkmcuFYZuM5cTG1DAF7ZlVNCq1+F7kbqme2Jcl+Kh4M78hihM76DJHNkurbv4UVOnejGxBKEmww==", "dev": true, + "peer": true, "requires": { "@jest/console": "^29.0.2", "@jest/reporters": "^29.0.2", @@ -10218,6 +11869,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -10227,6 +11879,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10237,6 +11890,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10245,19 +11899,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -10269,6 +11926,7 @@ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", "dev": true, + "peer": true, "requires": { "@jest/fake-timers": "^29.0.2", "@jest/types": "^29.0.2", @@ -10281,6 +11939,7 @@ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.2.tgz", "integrity": "sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==", "dev": true, + "peer": true, "requires": { "expect": "^29.0.2", "jest-snapshot": "^29.0.2" @@ -10291,6 +11950,7 @@ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.2.tgz", "integrity": "sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==", "dev": true, + "peer": true, "requires": { "jest-get-type": "^29.0.0" } @@ -10300,6 +11960,7 @@ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", "dev": true, + "peer": true, "requires": { "@jest/types": "^29.0.2", "@sinonjs/fake-timers": "^9.1.2", @@ -10314,6 +11975,7 @@ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.2.tgz", "integrity": "sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==", "dev": true, + "peer": true, "requires": { "@jest/environment": "^29.0.2", "@jest/expect": "^29.0.2", @@ -10326,6 +11988,7 @@ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.2.tgz", "integrity": "sha512-Kr41qejRQHHkCgWHC9YwSe7D5xivqP4XML+PvgwsnRFaykKdNflDUb4+xLXySOU+O/bPkVdFpGzUpVNSJChCrw==", "dev": true, + "peer": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.0.2", @@ -10359,6 +12022,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -10368,6 +12032,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10378,6 +12043,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10386,19 +12052,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -10419,6 +12088,7 @@ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.0.0.tgz", "integrity": "sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==", "dev": true, + "peer": true, "requires": { "@jridgewell/trace-mapping": "^0.3.15", "callsites": "^3.0.0", @@ -10430,6 +12100,7 @@ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.2.tgz", "integrity": "sha512-b5rDc0lLL6Kx73LyCx6370k9uZ8o5UKdCpMS6Za3ke7H9y8PtAU305y6TeghpBmf2In8p/qqi3GpftgzijSsNw==", "dev": true, + "peer": true, "requires": { "@jest/console": "^29.0.2", "@jest/types": "^29.0.2", @@ -10442,6 +12113,7 @@ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.2.tgz", "integrity": "sha512-fsyZqHBlXNMv5ZqjQwCuYa2pskXCO0DVxh5aaVCuAtwzHuYEGrhordyEncBLQNuCGQSYgElrEEmS+7wwFnnMKw==", "dev": true, + "peer": true, "requires": { "@jest/test-result": "^29.0.2", "graceful-fs": "^4.2.9", @@ -10454,6 +12126,7 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.2.tgz", "integrity": "sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==", "dev": true, + "peer": true, "requires": { "@babel/core": "^7.11.6", "@jest/types": "^29.0.2", @@ -10477,6 +12150,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -10486,6 +12160,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10496,6 +12171,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10504,19 +12180,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -10528,6 +12207,7 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", "dev": true, + "peer": true, "requires": { "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", @@ -10542,6 +12222,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -10551,6 +12232,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10561,6 +12243,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10569,19 +12252,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -10631,6 +12317,7 @@ "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.23.2.tgz", "integrity": "sha512-hO5PKvq8jD5uYHDnOBnRhwNDHlPtUEXVL4VN8eGfXQJNue51mrLwQGCACs5Mme+X2aY302nsyGFiZMuS5Y28Tw==", "dev": true, + "peer": true, "requires": { "@babel/helper-module-imports": "~7.18.6", "@lwc/errors": "2.23.2", @@ -10643,6 +12330,7 @@ "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.23.2.tgz", "integrity": "sha512-Myj24zhdgJZ6mM95/qEZFkV5Qv2P5Ujd7EKlOmCg1WLmY29O2hHkzrtlLz3+xPo3JmYtCbvbGxsDU1Gr/fL4Cw==", "dev": true, + "peer": true, "requires": { "@babel/core": "~7.18.13", "@babel/plugin-proposal-class-properties": "~7.18.6", @@ -10658,7 +12346,8 @@ "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.23.2.tgz", "integrity": "sha512-XEfn3boHv7RLWevOMwKawxFCrs9btbvyi5XaFsclwkrqEBZa+k5px5vyYEsCJozrvz2ddHkhcuZpG7jITPwNKQ==", - "dev": true + "dev": true, + "peer": true }, "@lwc/engine-server": { "version": "2.23.2", @@ -10671,15 +12360,16 @@ "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.23.2.tgz", "integrity": "sha512-rgqdd6aQja4T8ysmt2L1o9Aq+VWCtifcJv1FB/hNs1g2KloxZyZkHtK6Y+Tr4IXdgiH5LaT0L3tiQA3X4vssoQ==", - "dev": true + "dev": true, + "peer": true }, "@lwc/eslint-plugin-lwc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-1.4.0.tgz", - "integrity": "sha512-AgAQGlcCyJvcTE3AHXLjHmw9KSPeiYwg7Nj4czX/8ivn+5W51dRyzF/rSVwfplljA6Eedx67ydo7ezUDeY3Z2g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-1.5.1.tgz", + "integrity": "sha512-Jj27i4oiqYj9sgryhfOD0rdpDMNP+S1EzaTLgZPqO/MQg+hCd4EtcAXzwPFCs+xY9u1zwsztuQalqXhAP4JZ8Q==", "dev": true, "requires": { - "minimatch": "^5.1.0" + "minimatch": "^5.1.2" } }, "@lwc/jest-preset": { @@ -10725,9 +12415,9 @@ } }, "@lwc/module-resolver": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/module-resolver/-/module-resolver-2.23.2.tgz", - "integrity": "sha512-/0EGjzHIgEBu6Ot+wZpb3pzyP/qLIyCVGKQq0D1alFnBo3dCFVGMA1w0gCGRNn0TElq8fMukUcjr7ST7F/laUg==", + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/module-resolver/-/module-resolver-2.20.6.tgz", + "integrity": "sha512-ZkhIkteAwgETItq3CCiZN4xuDwbB6RaQGWWD2n8108Ms+Epi5+Ma5sptTFZ2eD8WtIFobaFNTPzV8+TjliZy0g==", "dev": true, "requires": { "resolve": "~1.22.1" @@ -10737,13 +12427,15 @@ "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.23.2.tgz", "integrity": "sha512-LgPs0RTaNRs382/+G1UpDDfh4F4NDiXhIFvUOJhtastciBJndXKdEN27aFdAVxrs+yCt9fCM5wgKVhyZSiGBrQ==", - "dev": true + "dev": true, + "peer": true }, "@lwc/style-compiler": { "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.23.2.tgz", "integrity": "sha512-cNKn18CRzv1IXDQ+tboUGB/VU8ubmnZ3kpGDyPk1VBUWaUdU9HhSXsl+4z/l8UdvNEEYnR3XqQYVsEnpMFO20w==", "dev": true, + "peer": true, "requires": { "@lwc/shared": "2.23.2", "postcss": "~8.4.16", @@ -10756,13 +12448,15 @@ "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.23.2.tgz", "integrity": "sha512-AJk5PFvNtNWHaVVQ4ePlr8+301SmekSF5fd+MifvT3p8sgNCmE7ZlCIsUkgD2qLu/xXLum4451BWBMPgC75r1Q==", - "dev": true + "dev": true, + "peer": true }, "@lwc/template-compiler": { "version": "2.23.2", "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.23.2.tgz", "integrity": "sha512-on6kRYprRfgKxXUDZNBjvLqp5WFQAOV6HTBx6PqW5j0s18Bz0qlF5w2VAv/2ZSfUtzK9544OC3wku4LZP43B2g==", "dev": true, + "peer": true, "requires": { "@lwc/errors": "2.23.2", "@lwc/shared": "2.23.2", @@ -10774,9 +12468,9 @@ } }, "@lwc/wire-service": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/wire-service/-/wire-service-2.23.2.tgz", - "integrity": "sha512-by+Uo6mseygZUUv7fdlcjU8FwsXKPvfZOMEf1PXP/iYdhSYAechV4LnrAYgGoGwduRr97860PBw6tp2Bb74FQw==", + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/wire-service/-/wire-service-2.20.6.tgz", + "integrity": "sha512-HDT04MpGeZwl5ZBC4p+21XVjNdsekysThhgn+BYlS2hrabenvcLE+C5JZJSDay44JqoH91TenqVX83OuiYbGSw==", "dev": true }, "@medv/blessed": { @@ -10785,6 +12479,15 @@ "integrity": "sha512-/NdX1Ql8hKNM0vHFJnEr/bcw6BG0ULHD3HhInpniZw5ixpl+n/QIRfMEEmLCn7acedbM1zGdZvU5ZMbn9kcF5Q==", "dev": true }, + "@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "requires": { + "eslint-scope": "5.1.1" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -10822,58 +12525,396 @@ } }, "@salesforce/eslint-config-lwc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@salesforce/eslint-config-lwc/-/eslint-config-lwc-3.3.3.tgz", - "integrity": "sha512-AZyBta7Y9N2IcJ4LbmIXSQzUoPoZ2cvoi75mqS+9QgUJfB7Il/vRj6NlflSOG14gkA4dmxoT7R6siGj2AYQ+PQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@salesforce/eslint-config-lwc/-/eslint-config-lwc-3.3.4.tgz", + "integrity": "sha512-Z+UymAmX80Szs4+PaMTJ/XHX9Rgp5sNv0AggCBJFPT94pAWm3UvjLpya+iE1pDblEOrgu97Js059Y/wMONqBzg==", "dev": true, "requires": { - "@babel/core": "~7.18.5", - "@babel/eslint-parser": "~7.18.2", + "@babel/core": "~7.20.5", + "@babel/eslint-parser": "~7.19.1", "eslint-restricted-globals": "~0.2.0", - "semver": "^7.3.7" + "semver": "^7.3.8" }, "dependencies": { + "@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@salesforce/eslint-plugin-lightning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@salesforce/eslint-plugin-lightning/-/eslint-plugin-lightning-1.0.0.tgz", + "integrity": "sha512-zk0PKXAcHKHepAG2EOSWlkOTxQM0Aw1CT6+MUxJcM42fCDwH/yPPpGkG3CWtRfmVViODGOwU9ywU2wlkAYcvUQ==", + "dev": true, + "requires": {} + }, + "@salesforce/sfdx-lwc-jest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@salesforce/sfdx-lwc-jest/-/sfdx-lwc-jest-1.2.1.tgz", + "integrity": "sha512-KBntqX81/ICOvA7X+KHos7dp9JGsCBwvNTlTfxaQNt9sYJSwCwjtmKKOrlokRofDIj9uFCCIOP5a0ZYi6Dastg==", + "dev": true, + "requires": { + "@lwc/compiler": "2.20.6", + "@lwc/engine-dom": "2.20.6", + "@lwc/jest-preset": "^11.4.0", + "@lwc/jest-resolver": "^11.4.0", + "@lwc/jest-serializer": "^11.4.0", + "@lwc/jest-transformer": "^11.4.0", + "@lwc/module-resolver": "2.20.6", + "@lwc/synthetic-shadow": "2.20.6", + "@lwc/wire-service": "2.20.6", + "@salesforce/wire-service-jest-util": "4.0.0", + "chalk": "^4.1.2", + "fast-glob": "^3.2.10", + "jest": "^28.1.3", + "jest-environment-jsdom": "^28.1.3", + "yargs": "~17.5.1" + }, + "dependencies": { + "@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + } + }, + "@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "requires": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + } + }, + "@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2" + } + }, + "@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + } + }, + "@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "requires": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + } + }, + "@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@lwc/babel-plugin-component": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.20.6.tgz", + "integrity": "sha512-iOzQFfe8gsmUAZoQSLG8k+vZl8bIfipaQXHWmM/sKLOUgxwW6eo4eD9sjRFBb0R/cPtu0t7zdpcXndPcTbPL1A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "~7.18.6", + "@lwc/errors": "2.20.6", + "@lwc/shared": "2.20.6", + "line-column": "~1.0.2" + } + }, + "@lwc/compiler": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.20.6.tgz", + "integrity": "sha512-xZwi2x0CWvuINNIh1CmP4jtigjLvrRTyK+VQmQOdrmj3fSuT7E847R1zgpY9ZVkk+uuxQioTJfxw2fMxp8CkeQ==", + "dev": true, + "requires": { + "@babel/core": "~7.18.9", + "@babel/plugin-proposal-class-properties": "~7.18.6", + "@babel/plugin-proposal-object-rest-spread": "~7.18.9", + "@lwc/babel-plugin-component": "2.20.6", + "@lwc/errors": "2.20.6", + "@lwc/shared": "2.20.6", + "@lwc/style-compiler": "2.20.6", + "@lwc/template-compiler": "2.20.6" + } + }, + "@lwc/engine-dom": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.20.6.tgz", + "integrity": "sha512-zx0PdQ0qyJJ+86wSorJrg4cU24Vb9fl5+mhggKHD7hOdey+DiEK5Wp5WcEqaUDWS9I0i3OfX1tw5TphxntOZyw==", + "dev": true + }, + "@lwc/errors": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.20.6.tgz", + "integrity": "sha512-GckFh4a+WVzSW7KHURqWBfmfgBGoDlEcjH4KWxGjGrjumgwNBH8h+9AAoOang5lFdWy1rTApIrIr3hl30SKu/Q==", + "dev": true + }, + "@lwc/shared": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.20.6.tgz", + "integrity": "sha512-2ZCcUBOUAdOW6dhhixZztAp+Du66YeHVywpU2SBFBQQHt1GSGjAWCv5YvZKcR/Hvon3BwdgBfnds9EArcDyVBw==", + "dev": true + }, + "@lwc/style-compiler": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.20.6.tgz", + "integrity": "sha512-Z7ji3SB8JHTSoirbM2JXw9TSK7XfpkG+czD32bWJ6tJrr675rK9b7kIRNVfWSUxD+9cROTbBkQroCeeBH2FWMQ==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "@lwc/shared": "2.20.6", + "postcss": "~8.4.14", + "postcss-selector-parser": "~6.0.9", + "postcss-value-parser": "~4.2.0", + "string.prototype.matchall": "^4.0.7" } - } - } - }, - "@salesforce/eslint-plugin-lightning": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@salesforce/eslint-plugin-lightning/-/eslint-plugin-lightning-1.0.0.tgz", - "integrity": "sha512-zk0PKXAcHKHepAG2EOSWlkOTxQM0Aw1CT6+MUxJcM42fCDwH/yPPpGkG3CWtRfmVViODGOwU9ywU2wlkAYcvUQ==", - "dev": true, - "requires": {} - }, - "@salesforce/sfdx-lwc-jest": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@salesforce/sfdx-lwc-jest/-/sfdx-lwc-jest-1.1.3.tgz", - "integrity": "sha512-5UCnYC299rI+S7+ES87ZhpcycwnYXmpSy3TpMX+mbgFqrWnMJ62MRNssx2sb+VBQ7/j3T/s/pVlkJyRfZN5Kww==", - "dev": true, - "requires": { - "@lwc/compiler": "2.23.2", - "@lwc/engine-dom": "2.23.2", - "@lwc/jest-preset": "^11.5.0", - "@lwc/jest-resolver": "^11.5.0", - "@lwc/jest-serializer": "^11.5.0", - "@lwc/jest-transformer": "^11.5.0", - "@lwc/module-resolver": "2.23.2", - "@lwc/synthetic-shadow": "2.23.2", - "@lwc/wire-service": "2.23.2", - "@salesforce/wire-service-jest-util": "4.0.0", - "chalk": "^4.1.2", - "fast-glob": "^3.2.10", - "jest": "^29.0.1", - "jest-environment-jsdom": "^29.0.1", - "yargs": "~17.5.1" - }, - "dependencies": { + }, + "@lwc/synthetic-shadow": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.20.6.tgz", + "integrity": "sha512-3c5uq+a9ISJFNbM/1E3UTSlaXspjuqrwDL/PmzD7ad3yoK/ij3L4G1lrtKs2o0lATFHgN900zAscFTEpzeT1Iw==", + "dev": true + }, + "@lwc/template-compiler": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.20.6.tgz", + "integrity": "sha512-r61f8pFDSHFx0EoUW58zvzOCZUfP1mjlcoevfURwcE2x7hH/8EjBWQBHhENao56iv4rfQL65MWDcbhc16rg7pA==", + "dev": true, + "requires": { + "@lwc/errors": "2.20.6", + "@lwc/shared": "2.20.6", + "acorn": "~8.7.1", + "astring": "~1.8.3", + "estree-walker": "~2.0.2", + "he": "~1.2.0", + "parse5": "~6.0.1" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -10883,6 +12924,24 @@ "color-convert": "^2.0.1" } }, + "babel-plugin-jest-hoist": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -10908,12 +12967,498 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true + }, + "expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "requires": { + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", + "dev": true, + "requires": { + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", + "import-local": "^3.0.2", + "jest-cli": "^28.1.3" + } + }, + "jest-changed-files": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + } + }, + "jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", + "dev": true, + "requires": { + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "babel-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", + "dev": true, + "requires": { + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-preset-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^28.1.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + } + } + }, + "jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" + } + }, + "jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true + }, + "jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*" + } + }, + "jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true + }, + "jest-resolve": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "dev": true, + "requires": { + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" + } + }, + "jest-runner": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + } + }, + "jest-runtime": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-snapshot": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" + } + }, + "jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.1.3" + } + }, + "jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dev": true, + "requires": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10942,9 +13487,9 @@ } }, "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", "dev": true }, "@sideway/pinpoint": { @@ -11058,25 +13603,14 @@ } }, "@types/jsdom": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.0.tgz", - "integrity": "sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==", + "version": "16.2.15", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz", + "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", "dev": true, "requires": { "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - }, - "dependencies": { - "parse5": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz", - "integrity": "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==", - "dev": true, - "requires": { - "entities": "^4.4.0" - } - } + "@types/parse5": "^6.0.3", + "@types/tough-cookie": "*" } }, "@types/json-schema": { @@ -11097,6 +13631,12 @@ "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", "dev": true }, + "@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, "@types/prettier": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", @@ -11328,15 +13868,15 @@ "dev": true }, "array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" } }, @@ -11347,14 +13887,26 @@ "dev": true }, "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" } }, @@ -11400,13 +13952,21 @@ } } }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.2.tgz", + "integrity": "sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==", "dev": true, "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "babel-jest": { @@ -11414,6 +13974,7 @@ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.2.tgz", "integrity": "sha512-yTu4/WSi/HzarjQtrJSwV+/0maoNt+iP0DmpvFJdv9yY+5BuNle8TbheHzzcSWj5gIHfuhpbLYHWRDYhWKyeKQ==", "dev": true, + "peer": true, "requires": { "@jest/transform": "^29.0.2", "@types/babel__core": "^7.1.14", @@ -11429,6 +13990,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -11438,6 +14000,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11448,6 +14011,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11456,19 +14020,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -11844,6 +14411,18 @@ "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", "whatwg-url": "^11.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } } }, "debug": { @@ -11856,9 +14435,9 @@ } }, "decimal.js": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", - "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "dedent": { @@ -11905,7 +14484,8 @@ "version": "29.0.0", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz", "integrity": "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==", - "dev": true + "dev": true, + "peer": true }, "dir-glob": { "version": "3.0.1", @@ -11958,12 +14538,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "dev": true - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -11974,34 +14548,55 @@ } }, "es-abstract": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", - "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "dev": true, "requires": { + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.2", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", "object-inspect": "^1.12.2", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" } }, "es-shim-unscopables": { @@ -12097,15 +14692,15 @@ } }, "eslint": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", - "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.1", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -12121,15 +14716,15 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -12216,9 +14811,9 @@ "dev": true }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -12257,13 +14852,14 @@ } }, "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" }, "dependencies": { "debug": { @@ -12298,23 +14894,25 @@ } }, "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "dependencies": { @@ -12329,12 +14927,12 @@ } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { @@ -12354,19 +14952,13 @@ "requires": { "brace-expansion": "^1.1.7" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true } } }, "eslint-plugin-jest": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.0.1.tgz", - "integrity": "sha512-LosUsrkwVSs/8Z/I8Hqn5vWgTEsHrfIquDEKOsV8/cl+gbFR4tiRCE1AimEotsHjSC0Rx1tYm6vPhw8C3ktmmg==", + "version": "27.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", + "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", "dev": true, "requires": { "@typescript-eslint/utils": "^5.10.0" @@ -12404,9 +14996,9 @@ "dev": true }, "espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "requires": { "acorn": "^8.8.0", @@ -12508,6 +15100,7 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.2.tgz", "integrity": "sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==", "dev": true, + "peer": true, "requires": { "@jest/expect-utils": "^29.0.2", "jest-get-type": "^29.0.0", @@ -12621,11 +15214,20 @@ "dev": true }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -12668,12 +15270,6 @@ "functions-have-names": "^1.2.2" } }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -12757,9 +15353,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -12839,6 +15435,15 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -12853,6 +15458,15 @@ "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -12908,6 +15522,12 @@ "get-intrinsic": "^1.1.1" } }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -12972,9 +15592,9 @@ "dev": true }, "husky": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", - "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true }, "iconv-lite": { @@ -13041,16 +15661,27 @@ "dev": true }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "dev": true, "requires": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.1.3", "has": "^1.0.3", "side-channel": "^1.0.4" } }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -13077,15 +15708,15 @@ } }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -13148,6 +15779,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -13197,6 +15834,19 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -13300,6 +15950,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.2.tgz", "integrity": "sha512-enziNbNUmXTcTaTP/Uq5rV91r0Yqy2UKzLUIabxMpGm9YHz8qpbJhiRnNVNvm6vzWfzt/0o97NEHH8/3udoClA==", "dev": true, + "peer": true, "requires": { "@jest/core": "^29.0.2", "@jest/types": "^29.0.2", @@ -13312,6 +15963,7 @@ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.0.0.tgz", "integrity": "sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==", "dev": true, + "peer": true, "requires": { "execa": "^5.0.0", "p-limit": "^3.1.0" @@ -13322,6 +15974,7 @@ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.2.tgz", "integrity": "sha512-YTPEsoE1P1X0bcyDQi3QIkpt2Wl9om9k2DQRuLFdS5x8VvAKSdYAVJufgvudhnKgM8WHvvAzhBE+1DRQB8x1CQ==", "dev": true, + "peer": true, "requires": { "@jest/environment": "^29.0.2", "@jest/expect": "^29.0.2", @@ -13349,6 +16002,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -13358,6 +16012,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13368,6 +16023,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -13376,19 +16032,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13400,6 +16059,7 @@ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.2.tgz", "integrity": "sha512-tlf8b+4KcUbBGr25cywIi3+rbZ4+G+SiG8SvY552m9sRZbXPafdmQRyeVE/C/R8K+TiBAMrTIUmV2SlStRJ40g==", "dev": true, + "peer": true, "requires": { "@jest/core": "^29.0.2", "@jest/test-result": "^29.0.2", @@ -13420,6 +16080,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -13429,6 +16090,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13439,6 +16101,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -13447,19 +16110,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13471,6 +16137,7 @@ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.2.tgz", "integrity": "sha512-RU4gzeUNZAFktYVzDGimDxeYoaiTnH100jkYYZgldqFamaZukF0IqmFx8+QrzVeEWccYg10EEJT3ox1Dq5b74w==", "dev": true, + "peer": true, "requires": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.0.2", @@ -13501,6 +16168,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -13510,6 +16178,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13520,6 +16189,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -13528,19 +16198,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13552,6 +16225,7 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.2.tgz", "integrity": "sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==", "dev": true, + "peer": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.0.0", @@ -13564,6 +16238,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -13573,6 +16248,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13583,6 +16259,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -13591,19 +16268,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13624,6 +16304,7 @@ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.2.tgz", "integrity": "sha512-+sA9YjrJl35iCg0W0VCrgCVj+wGhDrrKQ+YAqJ/DHBC4gcDFAeePtRRhpJnX9gvOZ63G7gt52pwp2PesuSEx0Q==", "dev": true, + "peer": true, "requires": { "@jest/types": "^29.0.2", "chalk": "^4.0.0", @@ -13637,6 +16318,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -13646,6 +16328,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13656,6 +16339,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -13664,19 +16348,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13684,19 +16371,180 @@ } }, "jest-environment-jsdom": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.0.2.tgz", - "integrity": "sha512-hWqC9FQI5yT04lTd4VJnzT5QObxq0xrSrqpGkqsYfxPeJYjyhriI7W2oJC5HZ1UbhnvA+8GS1nzgPsstvRpdVw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz", + "integrity": "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==", "dev": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/jsdom": "^20.0.0", + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/jsdom": "^16.2.4", "@types/node": "*", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2", - "jsdom": "^20.0.0" + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3", + "jsdom": "^19.0.0" + }, + "dependencies": { + "@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + } + }, + "@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*" + } + }, + "jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-environment-node": { @@ -13704,6 +16552,7 @@ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.2.tgz", "integrity": "sha512-4Fv8GXVCToRlMzDO94gvA8iOzKxQ7rhAbs8L+j8GPyTxGuUiYkV+63LecGeVdVhsL2KXih1sKnoqmH6tp89J7Q==", "dev": true, + "peer": true, "requires": { "@jest/environment": "^29.0.2", "@jest/fake-timers": "^29.0.2", @@ -13717,13 +16566,15 @@ "version": "29.0.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", - "dev": true + "dev": true, + "peer": true }, "jest-haste-map": { "version": "29.0.2", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.2.tgz", "integrity": "sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==", "dev": true, + "peer": true, "requires": { "@jest/types": "^29.0.2", "@types/graceful-fs": "^4.1.3", @@ -13744,6 +16595,7 @@ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.2.tgz", "integrity": "sha512-5f0493qDeAxjUldkBSQg5D1cLadRgZVyWpTQvfJeQwQUpHQInE21AyVHVv64M7P2Ue8Z5EZ4BAcoDS/dSPPgMw==", "dev": true, + "peer": true, "requires": { "jest-get-type": "^29.0.0", "pretty-format": "^29.0.2" @@ -13754,6 +16606,7 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz", "integrity": "sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==", "dev": true, + "peer": true, "requires": { "chalk": "^4.0.0", "jest-diff": "^29.0.2", @@ -13766,6 +16619,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -13775,6 +16629,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13785,6 +16640,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -13793,19 +16649,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13817,6 +16676,7 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", "dev": true, + "peer": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.0.2", @@ -13834,6 +16694,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -13843,6 +16704,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13853,6 +16715,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -13861,19 +16724,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13885,6 +16751,7 @@ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", "dev": true, + "peer": true, "requires": { "@jest/types": "^29.0.2", "@types/node": "*" @@ -13901,13 +16768,15 @@ "version": "29.0.0", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.0.0.tgz", "integrity": "sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==", - "dev": true + "dev": true, + "peer": true }, "jest-resolve": { "version": "29.0.2", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.2.tgz", "integrity": "sha512-V3uLjSA+EHxLtjIDKTBXnY71hyx+8lusCqPXvqzkFO1uCGvVpjBfuOyp+KOLBNSuY61kM2jhepiMwt4eiJS+Vw==", "dev": true, + "peer": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -13925,6 +16794,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -13934,6 +16804,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13944,6 +16815,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -13952,19 +16824,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13976,6 +16851,7 @@ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.2.tgz", "integrity": "sha512-fSAu6eIG7wtGdnPJUkVVdILGzYAP9Dj/4+zvC8BrGe8msaUMJ9JeygU0Hf9+Uor6/icbuuzQn5See1uajLnAqg==", "dev": true, + "peer": true, "requires": { "jest-regex-util": "^29.0.0", "jest-snapshot": "^29.0.2" @@ -13986,6 +16862,7 @@ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.2.tgz", "integrity": "sha512-+D82iPZejI8t+SfduOO1deahC/QgLFf8aJBO++Znz3l2ETtOMdM7K4ATsGWzCFnTGio5yHaRifg1Su5Ybza5Nw==", "dev": true, + "peer": true, "requires": { "@jest/console": "^29.0.2", "@jest/environment": "^29.0.2", @@ -14015,6 +16892,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -14024,6 +16902,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14034,6 +16913,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -14042,19 +16922,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -14066,6 +16949,7 @@ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.2.tgz", "integrity": "sha512-DO6F81LX4okOgjJLkLySv10E5YcV5NHUbY1ZqAUtofxdQE+q4hjH0P2gNsY8x3z3sqgw7O/+919SU4r18Fcuig==", "dev": true, + "peer": true, "requires": { "@jest/environment": "^29.0.2", "@jest/fake-timers": "^29.0.2", @@ -14096,6 +16980,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -14105,6 +16990,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14115,6 +17001,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -14123,19 +17010,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -14147,6 +17037,7 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.2.tgz", "integrity": "sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==", "dev": true, + "peer": true, "requires": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -14179,6 +17070,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -14188,6 +17080,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14198,6 +17091,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -14206,19 +17100,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "peer": true, "requires": { "lru-cache": "^6.0.0" } @@ -14228,6 +17125,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -14239,6 +17137,7 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", "dev": true, + "peer": true, "requires": { "@jest/types": "^29.0.2", "@types/node": "*", @@ -14253,6 +17152,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -14262,6 +17162,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14272,6 +17173,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -14280,19 +17182,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -14304,6 +17209,7 @@ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.2.tgz", "integrity": "sha512-AeRKm7cEucSy7tr54r3LhiGIXYvOILUwBM1S7jQkKs6YelwAlWKsmZGVrQR7uwsd31rBTnR5NQkODi1Z+6TKIQ==", "dev": true, + "peer": true, "requires": { "@jest/types": "^29.0.2", "camelcase": "^6.2.0", @@ -14318,6 +17224,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -14326,13 +17233,15 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true + "dev": true, + "peer": true }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14343,6 +17252,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -14351,19 +17261,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -14375,6 +17288,7 @@ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.2.tgz", "integrity": "sha512-ds2bV0oyUdYoyrUTv4Ga5uptz4cEvmmP/JzqDyzZZanvrIn8ipxg5l3SDOAIiyuAx1VdHd2FBzeXPFO5KPH8vQ==", "dev": true, + "peer": true, "requires": { "@jest/test-result": "^29.0.2", "@jest/types": "^29.0.2", @@ -14391,6 +17305,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -14400,6 +17315,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14410,6 +17326,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -14418,19 +17335,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -14442,6 +17362,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.2.tgz", "integrity": "sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==", "dev": true, + "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -14452,13 +17373,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -14466,9 +17389,9 @@ } }, "joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", "dev": true, "requires": { "@hapi/hoek": "^9.0.0", @@ -14478,6 +17401,12 @@ "@sideway/pinpoint": "^2.0.0" } }, + "js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -14494,28 +17423,28 @@ } }, "jsdom": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.0.tgz", - "integrity": "sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", "dev": true, "requires": { - "abab": "^2.0.6", - "acorn": "^8.7.1", + "abab": "^2.0.5", + "acorn": "^8.5.0", "acorn-globals": "^6.0.0", "cssom": "^0.5.0", "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", + "data-urls": "^3.0.1", "decimal.js": "^10.3.1", "domexception": "^4.0.0", "escodegen": "^2.0.0", "form-data": "^4.0.0", "html-encoding-sniffer": "^3.0.0", "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "https-proxy-agent": "^5.0.0", "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.0", - "parse5": "^7.0.0", - "saxes": "^6.0.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", @@ -14523,20 +17452,9 @@ "webidl-conversions": "^7.0.0", "whatwg-encoding": "^2.0.0", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.8.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", "xml-name-validator": "^4.0.0" - }, - "dependencies": { - "parse5": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz", - "integrity": "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==", - "dev": true, - "requires": { - "entities": "^4.4.0" - } - } } }, "jsesc": { @@ -14564,9 +17482,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "kleur": { @@ -14592,9 +17510,9 @@ } }, "lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true }, "line-column": { @@ -14614,30 +17532,30 @@ "dev": true }, "lint-staged": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.3.tgz", - "integrity": "sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.1.tgz", + "integrity": "sha512-LLJLO0Kdbcv2a+CvSF4p1M7jBZOajKSMpBUvyR8+bXccsqPER0/NxTFQSpNHjqwV9kM3tkHczYerTB5wI+bksQ==", "dev": true, "requires": { "cli-truncate": "^3.1.0", - "colorette": "^2.0.17", - "commander": "^9.3.0", + "colorette": "^2.0.19", + "commander": "^9.4.1", "debug": "^4.3.4", "execa": "^6.1.0", - "lilconfig": "2.0.5", - "listr2": "^4.0.5", + "lilconfig": "2.0.6", + "listr2": "^5.0.5", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-inspect": "^1.12.2", "pidtree": "^0.6.0", "string-argv": "^0.3.1", - "yaml": "^2.1.1" + "yaml": "^2.1.3" }, "dependencies": { "commander": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", - "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true }, "execa": { @@ -14708,17 +17626,17 @@ } }, "listr2": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", - "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", + "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", "dev": true, "requires": { "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", + "colorette": "^2.0.19", "log-update": "^4.0.0", "p-map": "^4.0.0", "rfdc": "^1.3.0", - "rxjs": "^7.5.5", + "rxjs": "^7.8.0", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, @@ -14897,9 +17815,9 @@ } }, "marked": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", - "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", "dev": true }, "merge-stream": { @@ -14946,9 +17864,9 @@ "dev": true }, "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -15075,14 +17993,14 @@ } }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "once": { @@ -15319,32 +18237,21 @@ "dev": true }, "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "dev": true }, "prettier-plugin-apex": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-apex/-/prettier-plugin-apex-1.10.0.tgz", - "integrity": "sha512-Kh6kMNq5IfCxlP49wsZbt2Pq/dx4zbwbEdjUcP9GCmXfRLGuoa6mrT26kIv8TJnEjFCPVzUjg1u0qa3qBStLmQ==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-apex/-/prettier-plugin-apex-1.12.0.tgz", + "integrity": "sha512-8tnF2Pp5RMoEYipgFudrujlWRlXqags4lJZD7xSgordX+Bsh8Pq1jXPihkkquHKy4PeZMIuJAtYIEOFLBQIv/w==", "dev": true, "requires": { - "axios": "^0.21.0", - "jest-docblock": "^27.0.1", - "wait-on": "^5.2.1", + "axios": "^1.0.0", + "jest-docblock": "^29.0.0", + "wait-on": "^6.0.0", "yargs": "^17.0.0" - }, - "dependencies": { - "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - } } }, "pretty-format": { @@ -15376,6 +18283,12 @@ "sisteransi": "^1.0.5" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -15383,9 +18296,9 @@ "dev": true }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "querystringify": { @@ -15522,9 +18435,9 @@ } }, "rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "requires": { "tslib": "^2.1.0" @@ -15536,6 +18449,17 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -15543,9 +18467,9 @@ "dev": true }, "saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, "requires": { "xmlchars": "^2.2.0" @@ -15716,25 +18640,25 @@ } }, "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "es-abstract": "^1.20.4" } }, "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "es-abstract": "^1.20.4" } }, "strip-ansi": { @@ -15921,9 +18845,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -15938,9 +18862,9 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, "tsutils": { @@ -15981,6 +18905,17 @@ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typescript": { "version": "4.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", @@ -16078,32 +19013,26 @@ } }, "wait-on": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", - "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", "dev": true, "requires": { - "axios": "^0.21.1", - "joi": "^17.3.0", + "axios": "^0.25.0", + "joi": "^17.6.0", "lodash": "^4.17.21", "minimist": "^1.2.5", - "rxjs": "^6.6.3" + "rxjs": "^7.5.4" }, "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", "dev": true, "requires": { - "tslib": "^1.9.0" + "follow-redirects": "^1.14.7" } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true } } }, @@ -16138,9 +19067,9 @@ "dev": true }, "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", "dev": true, "requires": { "tr46": "^3.0.0", @@ -16169,6 +19098,20 @@ "is-symbol": "^1.0.3" } }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -16235,9 +19178,9 @@ } }, "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", "dev": true, "requires": {} }, @@ -16266,9 +19209,9 @@ "dev": true }, "yaml": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", - "integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 9444c95a..350dfd76 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "pmd:scan:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/ruleset.xml -f csv -r pmd/pmd.csv --cache .pmdCache --short-names", "pmd:scan:deploy:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/deployRules.xml -f csv -r pmd/deploy.csv --cache .pmdCache --short-names", "prettier:apex:local": "prettier --apex-standalone-parser built-in --write \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\"", - "cleanup:docs": "prettier --write \"docs/*.html\"", + "prettier:docs": "prettier --write \"docs/*.html\"", "prettier:package": "prettier --write \"sfdx-source/**/*.{cls,component,page,trigger}\"", "prettier:verify:apex:local": "prettier --apex-standalone-parser built-in --list-different \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\"", "prettier:verify": "prettier --list-different \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\" \"docs/*.html\"", @@ -37,28 +37,28 @@ "namespacedev": ". scripts/packagedev/namespacedev.sh", "packagedev": ". scripts/packagedev/packagedev.sh", "prepare": "husky install", - "pre-commit": "lint-staged", + "precommit": "lint-staged", "labsdevhub": "sfdx config:set defaultdevhubusername=LabsLDO", "version": "auto-changelog && git add CHANGELOG.md", "updateHighlight": ". scripts/updateHighlight.sh", "readmeChange": ". doc-assets/onreadmechange.sh" }, "devDependencies": { - "@lwc/eslint-plugin-lwc": "^1.4.0", + "@lwc/eslint-plugin-lwc": "^1.5.1", "@prettier/plugin-xml": "^2.2.0", - "@salesforce/eslint-config-lwc": "^3.3.3", + "@salesforce/eslint-config-lwc": "^3.3.4", "@salesforce/eslint-plugin-lightning": "^1.0.0", - "@salesforce/sfdx-lwc-jest": "^1.1.3", + "@salesforce/sfdx-lwc-jest": "^1.2.1", "auto-changelog": "^2.4.0", - "eslint": "^8.23.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.0.1", + "eslint": "^8.33.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jest": "^27.2.1", "fx": "^20.0.2", - "husky": "^8.0.1", - "lint-staged": "^13.0.3", - "marked": "^4.1.0", - "prettier": "^2.7.1", - "prettier-plugin-apex": "^1.10.0" + "husky": "^8.0.3", + "lint-staged": "^13.1.1", + "marked": "^4.2.12", + "prettier": "^2.8.3", + "prettier-plugin-apex": "^1.12.0" }, "lint-staged": { "sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}": [ diff --git a/pmd/pmd-version.txt b/pmd/pmd-version.txt index 900219f2..540ff4fc 100644 --- a/pmd/pmd-version.txt +++ b/pmd/pmd-version.txt @@ -1 +1 @@ -6.49.0 \ No newline at end of file +6.54.0 \ No newline at end of file diff --git a/sfdx-project.json b/sfdx-project.json index ebad8e1d..d383740c 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -4,7 +4,7 @@ "path": "sfdx-source/LabsActionPlans", "default": true, "package": "Action Plans", - "versionName": "Summer 2022 v4.3", + "versionName": "Spring 2023 v4.3", "versionNumber": "4.3.0.NEXT", "ancestorVersion": "4.2.0", "releaseNotesUrl": "https://github.com/SalesforceLabs/ActionPlansV4/blob/main/README.md", @@ -30,7 +30,7 @@ "Action Plans@4.2.1-5": "04t5f000000rKJ9AAM", "Action Plans@4.3.0-3": "04t5f000000rL4EAAU", "Action Plans@4.3.0-4": "04t5f000000rL4JAAU", - "Action Plans@4.3.0-5": "04t5f000000rL4OAAU", - "Action Plans@4.3.0-7": "04t5f000000rL7hAAE" + "Action Plans@4.3.0-7": "04t5f000000rL7hAAE", + "Action Plans@4.3.0-8": "04t5f000000rL9JAAU" } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls index c4a451d1..f14ccdee 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls @@ -1532,4 +1532,18 @@ public with sharing class ActionPlanCreationController { } } } + + /** + * Main code for lightning lookup. Included in this class because we use this as the controller for our main page + *
The code is duplicated from ActionPlanSectionHeaderController because there is a lookup directly in this page (for now) + * + * @param queryText SOQL query to return records for the lookup + * @return `List` Returned records + * @see ActionPlanSectionHeaderController + */ + @RemoteAction + public static List getRecords(String queryText) { + System.debug('querytext ' + queryText); + return Database.query(queryText); + } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls index 39fe51af..1e4f53ce 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls @@ -159,4 +159,18 @@ public inherited sharing class ActionPlansSectionHeaderController { return iconPropertyMap; } + + /** + * Main code for lightning lookup. Included in this class because we use this as the controller for our lookups + *
the code is duplicated in AciontPlanCreationController because there is a lookup directly in that page (for now) + * + * @param queryText SOQL query to return records for the lookup + * @return `List` Returned records + * @see ActionPlanCreationController + */ + @RemoteAction + public static List getRecords(String queryText) { + System.debug('querytext ' + queryText); + return Database.query(queryText); + } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component index 5fdf8bf5..5f667d52 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component +++ b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component @@ -75,66 +75,94 @@ For full license text, see the LICENSE file in the repo root or https://opensour } var LightningLookupScripts{!for} = { //Function To Get Record's Details on Record Click - recInfo: function (recId, sObjType) { - var recInfoIdInput = document.getElementById('{!$Component.HiddenInput}'); - j$(recInfoIdInput).val(recId); - j$('[id$=SrchDrpDwn{!for}]').fadeOut(); - //ID Based Retrieval Instead Of Query to Get Record Details Of The Selected Record - result = sforce.connection.retrieve("{!JSENCODE(displayField)},Id", sObjType, [recId]); - j$('#{!for}sldsscopediv [id$=searchInput]').val(result[0].{!JSENCODE(displayField)}).trigger("parentchange", [result[0].{!JSENCODE(displayField)}]); - }, - searchRecords: function (key, sObjType, cObject) { + recInfo: function (recId, sObjType) { + var recInfoIdInput = document.getElementById('{!$Component.HiddenInput}'); + j$(recInfoIdInput).val(recId); + j$('[id$=SrchDrpDwn{!for}]').fadeOut(); - var sObjTypeLower = sObjType.toLowerCase(); - - j$('#' + key.attr('aria-activedescendant')).show(); - //Grabbing The Input Field Value - var searchKey = key.val(); - if (searchKey == '') { - j$('#' + key.attr('aria-activedescendant')).hide(); - } - //Querying For Records In Objects Name Matching The Input in The Text Field - var queryText = "SELECT Id, {!JSENCODE(displayField)} FROM " + sObjType + " WHERE {!JSENCODE(displayField)} LIKE '%" + searchKey + "%' {!JSENCODE(where)} ORDER BY {!JSENCODE(displayField)} ASC LIMIT 8"; - result = sforce.connection.query(queryText); - records = result.getArray("records"); - var searchList = ""; - //Creating List Elements Based on Query Results - var searchIcon = '{!URLFOR($Asset.SLDS, "assets/icons/utility-sprite/svg/symbols.svg#search")}'; - searchList += ''; - if (records.length > 0) { - - var iconTag = "{!ObjectIconInfo['iconTag']}"; - var objectIcon = "{!ObjectIconInfo['iconURL']}"; - var iconStyle = "{!ObjectIconInfo['iconStyle']}"; - - for (var i = 0; i < records.length; i++) { - // li elements of each list option - if (cObject == 'true' && iconTag != 'record') { - objectIcon = '{!URLFOR($Asset.SLDS, "assets/icons/custom-sprite/svg/symbols.svg#' + iconTag + '")}'; + var queryText = 'SELECT Id, {!displayField} FROM ' + sObjType + ' WHERE Id = \'' + recId + '\''; + //console.log('querytext ' + queryText); + Visualforce.remoting.Manager.invokeAction( + '{!$RemoteAction.ActionPlansSectionHeaderController.getRecords}', + queryText, + function (result, event) { + if (event.status) { + var record = result[0]; + j$('#{!for}sldsscopediv [id$=searchInput]').val(record.{!JSENCODE(displayField)}).trigger("parentchange", [record.{!JSENCODE(displayField)}]); + var recInfoIdInput = document.getElementById('{!$Component.HiddenInput}'); + j$(recInfoIdInput).val(recId); } else { - objectIcon = '{!URLFOR($Asset.SLDS, "assets/icons/standard-sprite/svg/symbols.svg#' + iconTag + '")}'; + alert(event.message); } + }, + { escape: true } + ); + }, + searchRecords: function (key, sObjType, cObject) { + + var sObjTypeLower = sObjType.toLowerCase(); - searchList += '
  • '; - searchList += '' + records[i]["{!JSENCODE(displayField)}"] + ''; - searchList += '
  • '; + j$('#' + key.attr('aria-activedescendant')).show(); + //Grabbing The Input Field Value + var searchKey = key.val(); + if (searchKey == '') { + j$('#' + key.attr('aria-activedescendant')).hide(); } - } else { + var searchList = ""; + //Creating List Elements Based on Query Results + var searchIcon = '{!URLFOR($Asset.SLDS, "assets/icons/utility-sprite/svg/symbols.svg#search")}'; searchList += ''; + '
    ' + + '' + + '' + + '' + + '{!$Label.ap_Search}:' + + '' + searchKey + '
    ' + + ''; + //Querying For Records In Objects Name Matching The Input in The Text Field + var queryText = "SELECT Id, {!JSENCODE(displayField)} FROM " + sObjType + " WHERE {!JSENCODE(displayField)} LIKE '%" + searchKey + "%' {!JSENCODE(where)} ORDER BY {!JSENCODE(displayField)} ASC LIMIT 8"; + var records = []; + + Visualforce.remoting.Manager.invokeAction( + '{!$RemoteAction.ActionPlansSectionHeaderController.getRecords}', + queryText, + function (result, event) { + if (event.status) { + records = result; + if (records.length > 0) { + + var iconTag = "{!ObjectIconInfo['iconTag']}"; + var objectIcon = "{!ObjectIconInfo['iconURL']}"; + var iconStyle = "{!ObjectIconInfo['iconStyle']}"; + + for (var i = 0; i < records.length; i++) { + // li elements of each list option + if (cObject == 'true' && iconTag != 'record') { + objectIcon = '{!URLFOR($Asset.SLDS, "assets/icons/custom-sprite/svg/symbols.svg#' + iconTag + '")}'; + } else { + objectIcon = '{!URLFOR($Asset.SLDS, "assets/icons/standard-sprite/svg/symbols.svg#' + iconTag + '")}'; + } + + searchList += '
  • '; + searchList += '' + records[i]["{!JSENCODE(displayField)}"] + ''; + searchList += '
  • '; + } + } else { + searchList += ''; + } + //Appending all the created result List Elements to the UL tag + j$('[id$=searchResultsUL{!for}]').html(searchList); + + } else { + alert(event.message); + } + }, + { escape: true } + ); } - //Appending all the created result List Elements to the UL tag - j$('[id$=searchResultsUL{!for}]').html(searchList); - } } checkinput(); diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page index 47043323..b6636ccd 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page @@ -76,10 +76,10 @@ For full license text, see the LICENSE file in the repo root or https://opensour }); } - - Then create a list view button for that object and add it to your list views. To Stop Using an Object with Action Plans If you want, for example, not to allow relating Action Plans to Contracts, remove the Contract field from the Action Plan Related Objects fieldset.There is no need to delete the field from the Action Plan object. Create a Template Now you're ready to create your first template. Navigate to the Action Plans Templates tab. Click on the \"New Action Plan Template\" button. The template screen looks like this: Name - Template Name. Description - An explanation of how the template should be used. Skip Weekends - Allows you to automatically reschedule a task that would fall on a weekend to either the day before or day after the weekend. When checked, a picklist appears, allowing you to select before or after the weekend. Action - Click \"X\" to eliminate a step in a template. Subject - What the task is to do. Task Dependency - The dependent task will only be created once the controlling task is completed. Days After- This value determines the due date of the task. For tasks with no dependency, the task's due date will be offset from the plan start date. For tasks with a dependency, the due date will be offset from the expected due date of the task on which it depends. Assigned To - Looks up to user. Leave blank if you want to assign the task dynamically.When assigning dynamically, the default behavior will be to assign the task to the running user. You can also have the system assign it to the record owner by changing your Action Plan Settings. See \"Post Install Configuration\" guide above. Category - What type of activity. Priority - Taken from Task priorities and Record Type(if applicable). Email - Send a standard New Task email when checked. For Tasks depending on others, the email will be sent when the task is created. Reminder - This check box will define the default behaviour for reminders when applying the template to create an Action plan . If it's left unchecked, in the Action Plan Creation page the reminders will be initially disabled If it's checked the reminders will be available. User Reminder settings: Go Personal Setup > My Personal Information > Reminders, if the option \"By default, set reminder on Tasks to:\" is checked then the selected time will be the default option for task template reminders. User setting for Activity Object : Go App Setup> Feature Settings > Sales > Activity Settings, If \"Enable Activity Reminders\" is not checked, then reminders column will not be displayed in the Action Plan creation page. Comments - Comments supporting a task. Add New Task - Adds an additional row to the tasks grid. Save - Saves the template. Task Record Types If your org uses Task Record Types, you must specify which Record Type to use for all Tasks from each Action Plan and Template record. This will affect the Status values available for each related Action Plan Task. This cannot be changed once an Action Plan or Template is created. Only one record type may be specified for all the Tasks on that Action Plan or Template. Create Action Plans for Several Accounts Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the \"Create Account Action Plans\" button. Select the template you want to use by typing the name on the lookup and clicking on it. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. Save the Action Plan. Note: Action Plan creation is handled by a queueable(asynchronous) process. It can take a couple of minutes to be able to view all created records. Verify the Action Plan and the tasks. Complete the first task on the Action Plan. Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete. Task notifications for Flow-created Action Plans User Settings To receive Task notifications if Send Email is selected on an Action Plan Task, ensure that users have been allowed to control receipt of Task notification emails(this is active by default), and that they have allowed email notifications to be sent(this is also enabled by default). See Salesforce H&T for more information. Org Setting The Send Email field on Action Plan Task must be checked to send a email notifications, and the setting Allow Flow to send delegated task notifications on records created through Apex must also be enabled. Go to Settings > Feature Settings > Sales > Activity Settings to check that box and allow email notifications to be sent via Flow-created Action Plans. Action Plan Tasks If the user has enabled task notification, then those will be sent when an Action Plan Task is created. If the Action Plan Task is updated to a new owner, and if the Send Email box is NOT checked, the user may still receive a task notification if that is in their personal settings. If the box is checked, assuming that notifications are enabled for that user, the email will be sent. Queues Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the createdTasks(which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. Automate Action Plan Creation Flow Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.Days from trigger to start Action Plan is optional(and defaults to 0). The first task will be due the number of days(specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. (Optional) Sample Action Plan Template for Account onboarding Run the following: sfdx force:apex:execute -f ./data/sample-data.apex To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow Create an Account and set Type to any value that starts with 'Customer' Process Builder It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans. It is also recommended NOT to use Process Builder at all! Apex To call the invocable Apex from a Trigger or Apex class, adapt the following sample code: UNMANAGED CODE String apTemplateName; ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ ActionPlanCreateInvocable.CreateActionPlanRequest req = new ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplate.Id; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 0; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); MANAGED PACKAGE String apTemplateName; LabsActionPlans__ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest req = new LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplateName; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 1; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = LabsActionPlans.ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); ActionPlanCreateInvocable.CreateActionPlanRequest class Variables: String templateNameOrID (required) Name is not unique, so ID is preferred Id relatedRecordID (required) Must have a relationship field named the related record object name from Action Plan object Integer daysToActionPlanStart (not required) Defaults to 0, the day the plan is created String actionPlanName (not required) Give the Action Plan a custom name. If not specified, defaults to {Template Name} - {Parent Record Name}. Share Your Templates and Discover Best Practices using Template Export and Template Import Action Plans supports the sharing and discovery of best practices using Template Export and Template Import. How to Share Your Template Export is simple. Navigate to the Template you wish to export. Click on the \"Export\" button. Export creates a simple XML file containing template header and task information. It also includes information about who created the template.Note: It does not include user information or sensitive data about what objects you might use this template with. If you are using Lightning Experience, the exported file is in your Files tab, in your private files library. If you are still using Salesforce Classic, it is in your Documents tab, in your private documents folder. Sharing the file is easy. Email the file to whomever you want to share it with. Do you want to share it with a broader audience? Email the file to Salesforce Labs at labs@salesforce.com . Best Practices: How to Import Import is also simple. Navigate to the \"Import Template\" tab. Select the file you want to import using \"Browse\" and once you've found it click on \"Import Template.\" (Optional) Sample Action Plan Template Import This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder." + "text": "Home Action Plans Changelog Action Plans Installation and Setup Please follow installation instructions, shown on the Installation page AppExchange AppExchange Listing Post-intall extras Scratch Org Developer Edition / Sandbox Apex Code Documentation About Action Plans Action Plans helps your organization encapsulate best practices into easily sharable, reusable task templates. You can create Action Plans for the following objects: Accounts Contacts Leads Opportunities Campaigns Contracts Cases Person Accounts Custom Objects Getting Help Action Plans is unsupported. For community assistance with Action Plans, please visit Salesforce Trailblazer Community . To submit ideas or issues, please visit Action Plans on Github . Community Action Plans is open source software. We welcome your issue reports, ideas, documentation, code tweaks and all other participation. Learn more . Features: Export and share your Action Plan Templates with other orgs. Import Action Plan Templates. Supports Task reminder times. Action Plans Settings controls behavior around Chatter Notifications, actions when a Lead is converted, and default Task assignment behavior Invocable Apex allows automatic Action Plan creation from a Template in Process Builder and Flow Post Install Configuration Getting started is easy. For each object, you need to add a button to the list view, add a button to the detail page. For Accounts, follow these steps:\" Update Action Plans Custom Settings Change these setting by editing Action Plan Settings, and updating values at either the organization level, profile levels, or user levels. Navigate to Setup > Develop > Custom Settings. Click on 'Manage' next to Action Plans Settings . Click the 'New' button near 'Default Organizational Level Value'. Check the values that you want to enable. Enable Chatter Post places a post in the related record's Chatter Feed(if Chatter is enabled for that object). If unchecked, Action Plans does not create a Feed Post. Unassigned Task Defaults to Record Owner ensures that Action Plan Template tasks with a blank 'Assigned To' field go to the related record's owner. If unchecked, tasks with a blank 'Assigned To' field are assigned to the running user. Tasks can be assigned to specific people on Action Plan Templates, which overrides this setting. Default Object on Lead Conversion specifies that if an Action Plan is related to a Lead, whether the Action Plan should be moved to the converted Account, Contact, or Opportunity when the Lead is converted. The default is Contact. Action Plans Business Hours ID and Use Business Hours are reserved for future functionality. Weekends: Custom Metadata Modify Custom Metadata Weekend Day to indicate which days of the week are the weekend and how many days to move a task forward or backwards to move it to the end of the previous week or the start of the next week. This allows you to work with a different weekend, or to avoid assigning any task to be due on any specific day of the week.All weekdays should have 0 in both numeric fields. Update Your Page & Search Layout Configurations Create Action Plans Buttons For each object, you need to add a button to the list view, For Accounts, follow these steps: Navigate to Setup > Object Manager > Account > Search Layouts for Salesforce Classic Click on \"Edit\" from the menu near \"List View.\" Move the \"Create Account Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Navigate to Setup > Object Manager > Account > Page Layouts. Note: the package includes a default \"Action Plan Layout\" for your reference. You do not need to use it. Click on \"Edit\" near one of your standard Account Page Layouts. Add \"Action Plans\" related list to the page. Edit the properties of the related list by clicking the configuration button above it. Expand \"Buttons\" section, clear the \"New\" checkbox and move \"Create Account Action Plan\" to the Selected buttons. Update the fields in the related list to meet your needs. Recommended fields include Start Date, Action Plan Status, Action Plan Template, Plan Start Date. Click \"Save.\" Repeat these steps for the other standard objects Action Plans supports: Contacts, Leads, Opportunities, etc. Delete Action Plans Buttons Follow this steps for Action Plan Object: Navigate to Setup > Object Manager > Action Plan > Search Layouts. Click on \"Edit\" near \"List View.\" Move the \"Delete Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Task Layout Optionally, add the \"Action Plan Task\" field to your Task page layout, but it should be Read-Only , as clearing this field will break the ability to track Action Plan progress. Security Update Your Org-Wide Default Sharing Settings Action Plans includes two shareable objects: Action Plan and Action Plan Template . You may configure your sharing settings in whatever way works for your organization. If you want anyone to be able to create and see plans and their templates, use Public Read/Write for Action Plan and Action Plan Template. If you want anyone to be able to see Action Plans and Templates without being able to change them, select \"Public Read Only.\" If your Org-Wide Default sharing settings are set to Private for Action Plan or Action Plan Template, you may need to implement custom automation to share Action Plan records with the appropriate people. You may do this via Apex sharing, or you may use other automation, to assign ownership of the Action Plan itself to the related record owner or any desired user. To use Action Plans, most users require access only to Tasks . They can be assigned Tasks without knowing that these Tasks are part of an Action Plan. Any changes they make to a Task's Status will be reflected in the related Action Plan Task Template record automatically. No Permission Set is required. Use Permission Sets For Security Assign the appropriate Permission Set(s) to each user who will need to use Action Plans: Action Plans Admin: Full permissions for Action Plans, Action Plan Templates, AP Tasks and APT Task Templates. Action Plans Template Creator: Full permissions for Action Plan Templates and AP Template Tasks. No Action Plan access. Action Plans Creator: Read, Create, Edit, Delete for Action Plans and AP Tasks. Read-only for Action Plan Templates and APT Task Templates. Action Plans Import/Export: Access to export and import Action Plan Template records. View the appropriate button for export and tab for import. Action Plans User: Read-only for Action Plans and AP Tasks. Edit permission for Tasks should be provided via the user's profile or other permission sets. Uses for each Permission Set: Some users may require visibility into the Action Plans related to those Tasks. These users need the Action Plans User  Permission Set. It gives Read-only access to Action Plan. Some users may need to create Action Plans from Templates but not edit the templates themselves. The Action Plans Creator  Permission Set gives read-only access to Action Plan Templates, and Read, Create, Edit, and Delete access to Action Plans. Users who can create and edit Action Plan Templates require the Action Plans Template Creator  Permission Set. This includes permission to Read, Create, Edit, and Delete all Action Plan Templates only. It does not include any Action Plan or Task permissions. If these users require Action Plan access, other Permission Sets should be used as well. A custom permission allows exporting of Action Plan Templates. Intended as an add-on for Action Plans Template Creator , the Action Plans Import/Export permission set allows the viewing of the Export button on Template detail pages and to the Import tab. The custom permission Action Plan Template Export allows exporting of Action Plan Templates and associated tasks. Use this permission with care, as it is a potential security hole for your org's proprietary templates. This is a great way to move templates from a Sandbox to Production org. Action Plans Admin  includes Modify All permissions for all four Action Plan objects(Action Plan, Action Plan Task Template, Action Plan Template, and Action Plan Template Task Template). The custom permission allows exporting Action Plan Templates. Note: The Apex used in Flows or via triggers does not require special permissions to run. Using Action Plans with Custom Objects To Start Using an Object with Action Plans Create the object and be sure to check \"Track Activities\" for the object attrributes Create a lookup field from Action Plan to the object. Name the field the same as the object name. The field label can be anything. As an example, if you have a custom object named MyObject__c , you must name the field on Action Plan MyObject__c Add the field to the Related Objects fieldset on Action Plan. The related object will now be available for selection when creating a new Action Plan and relating it to an object. Add the following code to the object trigger in before delete and after undelete contexts(removing the LabsActionPlans namespace if you're not using the managed package):LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'Custom_Object__c' ); Adding a New Custom Object Action Plan button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template.(Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link Give it a label and name, such as \"New MyObject Action Plan\" Display Type is List Button. Uncheck the list checkbox. Use the following format for the button(removing the LabsActionPlans namespace if you're not using the managed package):{!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType=\"CustomObject__c\", refId=CustomObject__c.Id] )} Create Action Plans for multiple Custom Object records Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: Then create a list view button for that object and add it to your list views. To Stop Using an Object with Action Plans If you want, for example, not to allow relating Action Plans to Contracts, remove the Contract field from the Action Plan Related Objects fieldset.There is no need to delete the field from the Action Plan object. Create a Template Now you're ready to create your first template. Navigate to the Action Plans Templates tab. Click on the \"New Action Plan Template\" button. The template screen looks like this: Name - Template Name. Description - An explanation of how the template should be used. Skip Weekends - Allows you to automatically reschedule a task that would fall on a weekend to either the day before or day after the weekend. When checked, a picklist appears, allowing you to select before or after the weekend. Action - Click \"X\" to eliminate a step in a template. Subject - What the task is to do. Task Dependency - The dependent task will only be created once the controlling task is completed. Days After- This value determines the due date of the task. For tasks with no dependency, the task's due date will be offset from the plan start date. For tasks with a dependency, the due date will be offset from the expected due date of the task on which it depends. Assigned To - Looks up to user. Leave blank if you want to assign the task dynamically.When assigning dynamically, the default behavior will be to assign the task to the running user. You can also have the system assign it to the record owner by changing your Action Plan Settings. See \"Post Install Configuration\" guide above. Category - What type of activity. Priority - Taken from Task priorities and Record Type(if applicable). Email - Send a standard New Task email when checked. For Tasks depending on others, the email will be sent when the task is created. Reminder - This check box will define the default behaviour for reminders when applying the template to create an Action plan . If it's left unchecked, in the Action Plan Creation page the reminders will be initially disabled If it's checked the reminders will be available. User Reminder settings: Go Personal Setup > My Personal Information > Reminders, if the option \"By default, set reminder on Tasks to:\" is checked then the selected time will be the default option for task template reminders. User setting for Activity Object : Go App Setup> Feature Settings > Sales > Activity Settings, If \"Enable Activity Reminders\" is not checked, then reminders column will not be displayed in the Action Plan creation page. Comments - Comments supporting a task. Add New Task - Adds an additional row to the tasks grid. Save - Saves the template. Task Record Types If your org uses Task Record Types, you must specify which Record Type to use for all Tasks from each Action Plan and Template record. This will affect the Status values available for each related Action Plan Task. This cannot be changed once an Action Plan or Template is created. Only one record type may be specified for all the Tasks on that Action Plan or Template. Create Action Plans for Several Accounts Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the \"Create Account Action Plans\" button. Select the template you want to use by typing the name on the lookup and clicking on it. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. Save the Action Plan. Note: Action Plan creation is handled by a queueable(asynchronous) process. It can take a couple of minutes to be able to view all created records. Verify the Action Plan and the tasks. Complete the first task on the Action Plan. Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete. Task notifications for Flow-created Action Plans User Settings To receive Task notifications if Send Email is selected on an Action Plan Task, ensure that users have been allowed to control receipt of Task notification emails(this is active by default), and that they have allowed email notifications to be sent(this is also enabled by default). See Salesforce H&T for more information. Org Setting The Send Email field on Action Plan Task must be checked to send a email notifications, and the setting Allow Flow to send delegated task notifications on records created through Apex must also be enabled. Go to Settings > Feature Settings > Sales > Activity Settings to check that box and allow email notifications to be sent via Flow-created Action Plans. Action Plan Tasks If the user has enabled task notification, then those will be sent when an Action Plan Task is created. If the Action Plan Task is updated to a new owner, and if the Send Email box is NOT checked, the user may still receive a task notification if that is in their personal settings. If the box is checked, assuming that notifications are enabled for that user, the email will be sent. Queues Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the createdTasks(which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. Automate Action Plan Creation Flow Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.Days from trigger to start Action Plan is optional(and defaults to 0). The first task will be due the number of days(specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. (Optional) Sample Action Plan Template for Account onboarding Run the following: sfdx force:apex:execute -f ./data/sample-data.apex To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow Create an Account and set Type to any value that starts with 'Customer' Process Builder It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans. It is also recommended NOT to use Process Builder at all! Apex To call the invocable Apex from a Trigger or Apex class, adapt the following sample code: UNMANAGED CODE String apTemplateName; ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ ActionPlanCreateInvocable.CreateActionPlanRequest req = new ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplate.Id; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 0; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); MANAGED PACKAGE String apTemplateName; LabsActionPlans__ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest req = new LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplateName; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 1; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = LabsActionPlans.ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); ActionPlanCreateInvocable.CreateActionPlanRequest class Variables: String templateNameOrID (required) Name is not unique, so ID is preferred Id relatedRecordID (required) Must have a relationship field named the related record object name from Action Plan object Integer daysToActionPlanStart (not required) Defaults to 0, the day the plan is created String actionPlanName (not required) Give the Action Plan a custom name. If not specified, defaults to {Template Name} - {Parent Record Name}. Share Your Templates and Discover Best Practices using Template Export and Template Import Action Plans supports the sharing and discovery of best practices using Template Export and Template Import. How to Share Your Template Export is simple. Navigate to the Template you wish to export. Click on the \"Export\" button. Export creates a simple XML file containing template header and task information. It also includes information about who created the template.Note: It does not include user information or sensitive data about what objects you might use this template with. If you are using Lightning Experience, the exported file is in your Files tab, in your private files library. If you are still using Salesforce Classic, it is in your Documents tab, in your private documents folder. Sharing the file is easy. Email the file to whomever you want to share it with. Do you want to share it with a broader audience? Email the file to Salesforce Labs at labs@salesforce.com . Best Practices: How to Import Import is also simple. Navigate to the \"Import Template\" tab. Select the file you want to import using \"Browse\" and once you've found it click on \"Import Template.\" (Optional) Sample Action Plan Template Import This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder." }, { "title": "ActionPlanCreateInvocable", diff --git a/docs/index.html b/docs/index.html index 85135f4b..7ce433cb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -485,7 +485,10 @@

    Use Permission Sets For Security

  • Action Plans Template Creator: Full permissions for Action Plan Templates and AP Template Tasks. No Action Plan access.
  • Action Plans Creator: Read, Create, Edit, Delete for Action Plans and AP Tasks. Read-only for Action Plan Templates and APT Task Templates.
  • Action Plans Import/Export: Access to export and import Action Plan Template records. View the appropriate button for export and tab for import.
  • -
  • Action Plans User: Read-only for Action Plans and AP Tasks.
  • +
  • + Action Plans User: Read-only for Action Plans and AP Tasks. Edit permission for Tasks should be provided via the user's profile or other permission + sets. +
  • Uses for each Permission Set:

      @@ -528,12 +531,12 @@

      To Start Using an Object wit
    • The related object will now be available for selection when creating a new Action Plan and relating it to an object.
    • Add the following code to the object trigger in before delete and after undelete contexts (removing the - LabsActionPlans namespace if you're not using the managed package: + LabsActionPlans namespace if you're not using the managed package):
      LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'Custom_Object__c' );
       
      +
    • -

      Adding a New Custom Object Action Plan button to the Action Plan object

      While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template. @@ -748,7 +751,7 @@

      (Optional)

      Process Builder

      It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans.

      It is also recommended NOT to use Process Builder at all!

      - +

      Apex

      To call the invocable Apex from a Trigger or Apex class, adapt the following sample code:

      From 4bf530c6e5f1b60dcef86408e3acffc2376993dd Mon Sep 17 00:00:00 2001 From: David Schach Date: Mon, 13 Feb 2023 12:36:04 -0800 Subject: [PATCH 12/70] fix(build): Update plugin dependencies --- package-lock.json | 42 +++++++++++++++++++++--------------------- package.json | 6 +++--- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index bef84433..5eaeecd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,14 +15,14 @@ "@salesforce/eslint-plugin-lightning": "^1.0.0", "@salesforce/sfdx-lwc-jest": "^1.2.1", "auto-changelog": "^2.4.0", - "eslint": "^8.33.0", + "eslint": "^8.34.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "fx": "^20.0.2", "husky": "^8.0.3", - "lint-staged": "^13.1.1", + "lint-staged": "^13.1.2", "marked": "^4.2.12", - "prettier": "^2.8.3", + "prettier": "^2.8.4", "prettier-plugin-apex": "^1.12.0" } }, @@ -4811,9 +4811,9 @@ } }, "node_modules/eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.4.1", @@ -8630,9 +8630,9 @@ "dev": true }, "node_modules/lint-staged": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.1.tgz", - "integrity": "sha512-LLJLO0Kdbcv2a+CvSF4p1M7jBZOajKSMpBUvyR8+bXccsqPER0/NxTFQSpNHjqwV9kM3tkHczYerTB5wI+bksQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.2.tgz", + "integrity": "sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==", "dev": true, "dependencies": { "cli-truncate": "^3.1.0", @@ -9630,9 +9630,9 @@ } }, "node_modules/prettier": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", - "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -14692,9 +14692,9 @@ } }, "eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", "dev": true, "requires": { "@eslint/eslintrc": "^1.4.1", @@ -17532,9 +17532,9 @@ "dev": true }, "lint-staged": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.1.tgz", - "integrity": "sha512-LLJLO0Kdbcv2a+CvSF4p1M7jBZOajKSMpBUvyR8+bXccsqPER0/NxTFQSpNHjqwV9kM3tkHczYerTB5wI+bksQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.2.tgz", + "integrity": "sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==", "dev": true, "requires": { "cli-truncate": "^3.1.0", @@ -18237,9 +18237,9 @@ "dev": true }, "prettier": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", - "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", "dev": true }, "prettier-plugin-apex": { diff --git a/package.json b/package.json index e48acab3..1669b652 100644 --- a/package.json +++ b/package.json @@ -50,14 +50,14 @@ "@salesforce/eslint-plugin-lightning": "^1.0.0", "@salesforce/sfdx-lwc-jest": "^1.2.1", "auto-changelog": "^2.4.0", - "eslint": "^8.33.0", + "eslint": "^8.34.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "fx": "^20.0.2", "husky": "^8.0.3", - "lint-staged": "^13.1.1", + "lint-staged": "^13.1.2", "marked": "^4.2.12", - "prettier": "^2.8.3", + "prettier": "^2.8.4", "prettier-plugin-apex": "^1.12.0" }, "lint-staged": { From 04fde847b9ab598d0c0adbf55f3699947207dd37 Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 21 Feb 2023 18:15:23 -0800 Subject: [PATCH 13/70] fix(tests): redirect test to private --- pmd/pmd-version.txt | 1 - .../main/default/tests/ActionPlansRedirectTest.cls | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pmd/pmd-version.txt b/pmd/pmd-version.txt index 540ff4fc..e69de29b 100644 --- a/pmd/pmd-version.txt +++ b/pmd/pmd-version.txt @@ -1 +0,0 @@ -6.54.0 \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls index 10cdf7b9..65e2c687 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls @@ -16,7 +16,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour * @group Tests */ @IsTest -public class ActionPlansRedirectTest { +private class ActionPlansRedirectTest { @TestSetup private static void makeData() { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); From e40b10a0129cc415527a4876ae6bf2f5893369b5 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 22 Feb 2023 11:07:52 -0800 Subject: [PATCH 14/70] build(npm): update package dependencies --- package-lock.json | 15795 ++++++++++++++++++++------------------------ package.json | 12 +- 2 files changed, 7082 insertions(+), 8725 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5eaeecd3..512232d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,11 @@ "version": "4.3.0", "hasInstallScript": true, "devDependencies": { - "@lwc/eslint-plugin-lwc": "^1.5.1", + "@lwc/eslint-plugin-lwc": "^1.6.2", "@prettier/plugin-xml": "^2.2.0", - "@salesforce/eslint-config-lwc": "^3.3.4", + "@salesforce/eslint-config-lwc": "^3.4.0", "@salesforce/eslint-plugin-lightning": "^1.0.0", - "@salesforce/sfdx-lwc-jest": "^1.2.1", + "@salesforce/sfdx-lwc-jest": "^1.3.0", "auto-changelog": "^2.4.0", "eslint": "^8.34.0", "eslint-plugin-import": "^2.27.5", @@ -61,25 +61,25 @@ } }, "node_modules/@babel/core": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.13.tgz", - "integrity": "sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.1.0", + "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.13", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.13", - "@babel/types": "^7.18.13", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", + "json5": "^2.2.2", "semver": "^6.3.0" }, "engines": { @@ -109,13 +109,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", - "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.21.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -183,17 +184,18 @@ "dev": true }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", - "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", + "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -213,13 +215,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -238,12 +240,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -262,9 +264,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.0.tgz", + "integrity": "sha512-eD/JQ21IG2i1FraJnTMbUarAUkA7G988ofehG5MDCRXaUU91rEBJuCeSoou2Sk1y4RbLYXzqEg1QLwEmRU4qcQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -273,8 +275,8 @@ "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -293,25 +295,26 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -329,6 +332,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", @@ -360,23 +375,23 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", "dev": true, "dependencies": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -397,9 +412,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.1.tgz", + "integrity": "sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -441,16 +456,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -496,12 +511,12 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz", - "integrity": "sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz", + "integrity": "sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -546,22 +561,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -650,12 +649,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", - "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -665,15 +664,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -683,12 +681,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -698,14 +696,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.12.tgz", - "integrity": "sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz", + "integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-typescript": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -715,14 +713,14 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", + "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-transform-typescript": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -746,19 +744,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.0.tgz", + "integrity": "sha512-Xdt2P1H4LKTO8ApPfnO1KmzYMFpp7D/EinoXzLYN/cHcBNrVCAkAtGUcXnHXrl/VGktureU6fkQrHSBE2URfoA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", + "@babel/generator": "^7.21.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", + "@babel/parser": "^7.21.0", + "@babel/types": "^7.21.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -767,9 +765,9 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.0.tgz", + "integrity": "sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", @@ -1037,21 +1035,20 @@ } }, "node_modules/@jest/console": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.2.tgz", - "integrity": "sha512-Fv02ijyhF4D/Wb3DvZO3iBJQz5DnzpJEIDBDbvje8Em099N889tNMUnBw7SalmSuOI+NflNG40RA1iK71kImPw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, - "peer": true, "dependencies": { - "@jest/types": "^29.0.2", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/console/node_modules/ansi-styles": { @@ -1059,7 +1056,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1075,7 +1071,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1092,7 +1087,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1104,15 +1098,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -1122,7 +1114,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1131,43 +1122,42 @@ } }, "node_modules/@jest/core": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.2.tgz", - "integrity": "sha512-imP5M6cdpHEOkmcuFYZuM5cTG1DAF7ZlVNCq1+F7kbqme2Jcl+Kh4M78hihM76DJHNkurbv4UVOnejGxBKEmww==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, - "peer": true, "dependencies": { - "@jest/console": "^29.0.2", - "@jest/reporters": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "ci-info": "^3.2.0", + "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.0.0", - "jest-config": "^29.0.2", - "jest-haste-map": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-resolve-dependencies": "^29.0.2", - "jest-runner": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", - "jest-watcher": "^29.0.2", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -1183,7 +1173,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1199,7 +1188,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1216,7 +1204,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1228,15 +1215,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -1246,7 +1231,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1255,117 +1239,85 @@ } }, "node_modules/@jest/environment": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", - "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, - "peer": true, "dependencies": { - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^29.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==", - "dev": true, - "peer": true, - "dependencies": { - "expect": "^29.0.2", - "jest-snapshot": "^29.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.2.tgz", - "integrity": "sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==", - "dev": true, - "peer": true, - "dependencies": { - "jest-get-type": "^29.0.0" + "jest-mock": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", - "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, - "peer": true, "dependencies": { - "@jest/types": "^29.0.2", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/globals": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.2.tgz", - "integrity": "sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, - "peer": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/types": "^29.0.2", - "jest-mock": "^29.0.2" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.2.tgz", - "integrity": "sha512-Kr41qejRQHHkCgWHC9YwSe7D5xivqP4XML+PvgwsnRFaykKdNflDUb4+xLXySOU+O/bPkVdFpGzUpVNSJChCrw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, - "peer": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.3", + "glob": "^7.1.2", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", + "source-map": "^0.6.0", "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" + "v8-to-istanbul": "^8.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -1381,7 +1333,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1397,7 +1348,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1414,7 +1364,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1426,15 +1375,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -1444,7 +1391,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1453,89 +1399,85 @@ } }, "node_modules/@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.25.16" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.0.0.tgz", - "integrity": "sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, - "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/test-result": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.2.tgz", - "integrity": "sha512-b5rDc0lLL6Kx73LyCx6370k9uZ8o5UKdCpMS6Za3ke7H9y8PtAU305y6TeghpBmf2In8p/qqi3GpftgzijSsNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, - "peer": true, "dependencies": { - "@jest/console": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.2.tgz", - "integrity": "sha512-fsyZqHBlXNMv5ZqjQwCuYa2pskXCO0DVxh5aaVCuAtwzHuYEGrhordyEncBLQNuCGQSYgElrEEmS+7wwFnnMKw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, - "peer": true, "dependencies": { - "@jest/test-result": "^29.0.2", + "@jest/test-result": "^27.5.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "slash": "^3.0.0" + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.2.tgz", - "integrity": "sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, - "peer": true, "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.0.2", - "@jridgewell/trace-mapping": "^0.3.15", + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.1.0", + "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform/node_modules/ansi-styles": { @@ -1543,7 +1485,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1559,7 +1500,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1576,7 +1516,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1588,15 +1527,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -1606,7 +1543,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1615,21 +1551,19 @@ } }, "node_modules/@jest/types": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", - "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, - "peer": true, "dependencies": { - "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^17.0.8", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/types/node_modules/ansi-styles": { @@ -1637,7 +1571,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1653,7 +1586,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1670,7 +1602,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1682,15 +1613,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jest/types/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -1700,7 +1629,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1746,25 +1674,24 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@lwc/babel-plugin-component": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.23.2.tgz", - "integrity": "sha512-hO5PKvq8jD5uYHDnOBnRhwNDHlPtUEXVL4VN8eGfXQJNue51mrLwQGCACs5Mme+X2aY302nsyGFiZMuS5Y28Tw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.31.0.tgz", + "integrity": "sha512-Zx1w0eNhV2O9dP42PEg0PmhAfjA3V2L/gYbc9oBlfC12nAZIXsFOLqqnhECA2clHiJxFNSiCIf77gVtN7cRGcg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-module-imports": "~7.18.6", - "@lwc/errors": "2.23.2", - "@lwc/shared": "2.23.2", + "@lwc/errors": "2.31.0", + "@lwc/shared": "2.31.0", "line-column": "~1.0.2" }, "peerDependencies": { @@ -1772,50 +1699,78 @@ } }, "node_modules/@lwc/compiler": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.23.2.tgz", - "integrity": "sha512-Myj24zhdgJZ6mM95/qEZFkV5Qv2P5Ujd7EKlOmCg1WLmY29O2hHkzrtlLz3+xPo3JmYtCbvbGxsDU1Gr/fL4Cw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.31.0.tgz", + "integrity": "sha512-8Xseow7Ww0lsHeVMNm9795BRDx+pDzlFPtojCzbTwHY+sVRNf92qnnD+EgnYzZ+77YkksuuNgPoTZBYPufJFZQ==", "dev": true, - "peer": true, "dependencies": { - "@babel/core": "~7.18.13", + "@babel/core": "~7.20.2", "@babel/plugin-proposal-class-properties": "~7.18.6", - "@babel/plugin-proposal-object-rest-spread": "~7.18.9", - "@lwc/babel-plugin-component": "2.23.2", - "@lwc/errors": "2.23.2", - "@lwc/shared": "2.23.2", - "@lwc/style-compiler": "2.23.2", - "@lwc/template-compiler": "2.23.2" + "@babel/plugin-proposal-object-rest-spread": "~7.20.2", + "@lwc/babel-plugin-component": "2.31.0", + "@lwc/errors": "2.31.0", + "@lwc/shared": "2.31.0", + "@lwc/style-compiler": "2.31.0", + "@lwc/template-compiler": "2.31.0" } }, - "node_modules/@lwc/engine-dom": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.23.2.tgz", - "integrity": "sha512-XEfn3boHv7RLWevOMwKawxFCrs9btbvyi5XaFsclwkrqEBZa+k5px5vyYEsCJozrvz2ddHkhcuZpG7jITPwNKQ==", + "node_modules/@lwc/compiler/node_modules/@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", "dev": true, - "peer": true + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@lwc/engine-dom": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.31.0.tgz", + "integrity": "sha512-0J7MSIdjp7C2ufClAtEm937gNKld94+p49yMHSzfVLVEW5aZfGp3ThEvACgsEGmQKQMBwqOByaYGhcYXSRiSUw==", + "dev": true }, "node_modules/@lwc/engine-server": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/engine-server/-/engine-server-2.23.2.tgz", - "integrity": "sha512-Pc3e2WpGEsUhne9ZSX3DpWNz/AU83QSBOAbIBzLGF8WOzRfV50X+werEqmbWtw+tNCY6IVf/05QD95CYxiqN5A==", + "version": "2.37.3", + "resolved": "https://registry.npmjs.org/@lwc/engine-server/-/engine-server-2.37.3.tgz", + "integrity": "sha512-+XDzPN3AakvnnOxHOlUuuHphMU28Ka22qCgPs9fZ+kQEQhnwYpgn/7wTvECWGuEtW8e0ys4boyytiIo/IoCCFA==", "dev": true, "peer": true }, "node_modules/@lwc/errors": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.23.2.tgz", - "integrity": "sha512-rgqdd6aQja4T8ysmt2L1o9Aq+VWCtifcJv1FB/hNs1g2KloxZyZkHtK6Y+Tr4IXdgiH5LaT0L3tiQA3X4vssoQ==", - "dev": true, - "peer": true + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.31.0.tgz", + "integrity": "sha512-3sjby4FsYz1mUVlaAtS2hqISxy9SoDe2POZE2weZvAhkvFXG3ijRi8Sc9uGeta2akv/Df14tpRk+hesHdYoXYQ==", + "dev": true }, "node_modules/@lwc/eslint-plugin-lwc": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-1.5.1.tgz", - "integrity": "sha512-Jj27i4oiqYj9sgryhfOD0rdpDMNP+S1EzaTLgZPqO/MQg+hCd4EtcAXzwPFCs+xY9u1zwsztuQalqXhAP4JZ8Q==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-1.6.2.tgz", + "integrity": "sha512-Oc2FpOA0/RRl10SdOjmj8TG1xdTM2nfmD9urQIUOLl3n5s14HQNljLGSYZm8lBswp0m7HlGp36kxyka40Vw/qw==", "dev": true, "dependencies": { - "minimatch": "^5.1.2" + "globals": "^13.20.0", + "minimatch": "^6.2.0" }, "engines": { "node": ">=10.0.0" @@ -1825,15 +1780,42 @@ "eslint": "^7 || ^8" } }, + "node_modules/@lwc/eslint-plugin-lwc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@lwc/eslint-plugin-lwc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@lwc/jest-preset": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@lwc/jest-preset/-/jest-preset-11.5.0.tgz", - "integrity": "sha512-tg+I0r9Crh+ab8VwMqjptf/MxjRpdOVvpXWkBBgIfRC7VqRswZ+i42/Gqe4ZpjujQiNJybBAf+UDuVIF+9vspg==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@lwc/jest-preset/-/jest-preset-11.5.4.tgz", + "integrity": "sha512-Ei4rp+v7Uz5U2VtncFUN3g58SZ4/Q5z7JpaYy8jjD6Pc/J+K0rqtNpJpuZ0DI3CXvtpFZdKGtt5O8ANjIMSrrg==", "dev": true, "dependencies": { - "@lwc/jest-resolver": "11.5.0", - "@lwc/jest-serializer": "11.5.0", - "@lwc/jest-transformer": "11.5.0" + "@lwc/jest-resolver": "11.5.4", + "@lwc/jest-serializer": "11.5.4", + "@lwc/jest-transformer": "11.5.4" }, "engines": { "node": ">=10" @@ -1847,9 +1829,9 @@ } }, "node_modules/@lwc/jest-resolver": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@lwc/jest-resolver/-/jest-resolver-11.5.0.tgz", - "integrity": "sha512-vTsJhInWrlfq74CaytI7lLCKMpTKLD1NY2CNvhKq5LYM6nSGWxJUTF26ZypfDtCp/7mFhld0dixJPIkZrl94OQ==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@lwc/jest-resolver/-/jest-resolver-11.5.4.tgz", + "integrity": "sha512-I1s+Fb05jmX+l6GeigBDwwzUoxVO1qBZMQNdu6miCNdnVJ15SZxy6T61pYBY1AkiJrVVl72tkFjHblMMNpNBoA==", "dev": true, "engines": { "node": ">=10" @@ -1859,12 +1841,12 @@ } }, "node_modules/@lwc/jest-serializer": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@lwc/jest-serializer/-/jest-serializer-11.5.0.tgz", - "integrity": "sha512-et9DIv+TMW1Emf2I0puimXiJCysFfbsYmDTMxWjQWa0lloRn56EA1/5B8cvTNbKZMxwIYBo+T5Zr0zFqkH+SXg==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@lwc/jest-serializer/-/jest-serializer-11.5.4.tgz", + "integrity": "sha512-hivUuejZKRVEPxHFnG5O4Hz/do581u0uWLCvKxh9HT06WMeiW+grCnrzWnrjFvLv5GcFfZchj0bGAj6UFuOObA==", "dev": true, "dependencies": { - "pretty-format": "^29.0.1" + "pretty-format": "^29.3.1" }, "engines": { "node": ">=10" @@ -1874,18 +1856,18 @@ } }, "node_modules/@lwc/jest-transformer": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@lwc/jest-transformer/-/jest-transformer-11.5.0.tgz", - "integrity": "sha512-N8j3NbZAslB3P5j9SkKi2hUUKEm/O9LBBg15A78CDFOM3zmoXPqImmjaoiUDlJuGo0ycZ5jzKRidPt6Dpw+oUQ==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@lwc/jest-transformer/-/jest-transformer-11.5.4.tgz", + "integrity": "sha512-L+zK3nxiduESeMurXLlO5LeXcnpzp6qXsXk9gaz9Tdvt9x07Hp728XNeg0SutSdNmRK+8vKCZHupFQTgEEOPIg==", "dev": true, "dependencies": { - "@babel/core": "^7.18.13", + "@babel/core": "^7.20.5", "@babel/plugin-proposal-dynamic-import": "^7.18.6", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-decorators": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-syntax-decorators": "^7.19.0", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", "@babel/preset-typescript": "^7.18.6", - "babel-preset-jest": "^29.0.0" + "babel-preset-jest": "^29.2.0" }, "engines": { "node": ">=10" @@ -1896,52 +1878,48 @@ } }, "node_modules/@lwc/module-resolver": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/module-resolver/-/module-resolver-2.20.6.tgz", - "integrity": "sha512-ZkhIkteAwgETItq3CCiZN4xuDwbB6RaQGWWD2n8108Ms+Epi5+Ma5sptTFZ2eD8WtIFobaFNTPzV8+TjliZy0g==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/module-resolver/-/module-resolver-2.31.0.tgz", + "integrity": "sha512-SmjGeTuii85RaUERLsS56DrY4MFWUcLVjmInjRU46TmAXMnPfCsk8fxQ5J1iE0Cf7+1/2sjlO0U9VxBQpSNqkA==", "dev": true, "dependencies": { "resolve": "~1.22.1" } }, "node_modules/@lwc/shared": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.23.2.tgz", - "integrity": "sha512-LgPs0RTaNRs382/+G1UpDDfh4F4NDiXhIFvUOJhtastciBJndXKdEN27aFdAVxrs+yCt9fCM5wgKVhyZSiGBrQ==", - "dev": true, - "peer": true + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.31.0.tgz", + "integrity": "sha512-tf+/I5ErSrQAVPK8BZAfmOaX0Xp54MbrADCTqeGaKOM/CkVf5mECipZ4DaBIJaFw+YgSpEABeM1FuWAeodeoLg==", + "dev": true }, "node_modules/@lwc/style-compiler": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.23.2.tgz", - "integrity": "sha512-cNKn18CRzv1IXDQ+tboUGB/VU8ubmnZ3kpGDyPk1VBUWaUdU9HhSXsl+4z/l8UdvNEEYnR3XqQYVsEnpMFO20w==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.31.0.tgz", + "integrity": "sha512-MKsKhfmSU45Xxq5ImJTGCJdqIQi8jx5PuU/xmwZffqCjscQgG4gDXxG2YAh8fGMbZSyrIjN/WTQlr7OvUzZrBA==", "dev": true, - "peer": true, "dependencies": { - "@lwc/shared": "2.23.2", - "postcss": "~8.4.16", + "@lwc/shared": "2.31.0", + "postcss": "~8.4.18", "postcss-selector-parser": "~6.0.9", "postcss-value-parser": "~4.2.0", - "string.prototype.matchall": "^4.0.7" + "string.prototype.matchall": "^4.0.8" } }, "node_modules/@lwc/synthetic-shadow": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.23.2.tgz", - "integrity": "sha512-AJk5PFvNtNWHaVVQ4ePlr8+301SmekSF5fd+MifvT3p8sgNCmE7ZlCIsUkgD2qLu/xXLum4451BWBMPgC75r1Q==", - "dev": true, - "peer": true + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.31.0.tgz", + "integrity": "sha512-K9A8DcmSkZIF7l2sGs53h/oTl/Vdoa6XCYIudHwxVormxUhvHhd9TPbEyJBBKJ8augFZAoVs1q5yS4Nr+R9CBg==", + "dev": true }, "node_modules/@lwc/template-compiler": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.23.2.tgz", - "integrity": "sha512-on6kRYprRfgKxXUDZNBjvLqp5WFQAOV6HTBx6PqW5j0s18Bz0qlF5w2VAv/2ZSfUtzK9544OC3wku4LZP43B2g==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.31.0.tgz", + "integrity": "sha512-4RsASVNmOJ7cNEQOjxYaUWB3cFNAm0KtDWpD54XbhVZ7SBCUBKZ2BZvcRsP6mp7O4a8QOFQiCeCtoDAT/TQ4aA==", "dev": true, - "peer": true, "dependencies": { - "@lwc/errors": "2.23.2", - "@lwc/shared": "2.23.2", - "acorn": "~8.8.0", + "@lwc/errors": "2.31.0", + "@lwc/shared": "2.31.0", + "acorn": "~8.8.1", "astring": "~1.8.3", "estree-walker": "~2.0.2", "he": "~1.2.0", @@ -1949,9 +1927,9 @@ } }, "node_modules/@lwc/wire-service": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/wire-service/-/wire-service-2.20.6.tgz", - "integrity": "sha512-HDT04MpGeZwl5ZBC4p+21XVjNdsekysThhgn+BYlS2hrabenvcLE+C5JZJSDay44JqoH91TenqVX83OuiYbGSw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/wire-service/-/wire-service-2.31.0.tgz", + "integrity": "sha512-go6mhdqLpsu/svRm7Oe+ewi1qvrOlaVjngVU6O2V/UXdKpw22csQEdRCs25jC/kCRNtYdARPLIHlItuK+qL0NQ==", "dev": true }, "node_modules/@medv/blessed": { @@ -2021,12 +1999,12 @@ } }, "node_modules/@salesforce/eslint-config-lwc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@salesforce/eslint-config-lwc/-/eslint-config-lwc-3.3.4.tgz", - "integrity": "sha512-Z+UymAmX80Szs4+PaMTJ/XHX9Rgp5sNv0AggCBJFPT94pAWm3UvjLpya+iE1pDblEOrgu97Js059Y/wMONqBzg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@salesforce/eslint-config-lwc/-/eslint-config-lwc-3.4.0.tgz", + "integrity": "sha512-RV1of9PVpVHiz4RPc6YugGyw6cyzmddDUZzv3YwIhXqdhra+Enb+DJerVCexSXKGkcZ1vF9uTuQOAOE6tA5J1A==", "dev": true, "dependencies": { - "@babel/core": "~7.20.5", + "@babel/core": "~7.21.0", "@babel/eslint-parser": "~7.19.1", "eslint-restricted-globals": "~0.2.0", "semver": "^7.3.8" @@ -2042,58 +2020,19 @@ "eslint-plugin-jest": "*" } }, - "node_modules/@salesforce/eslint-config-lwc/node_modules/@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "node_modules/@salesforce/eslint-config-lwc/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@salesforce/eslint-config-lwc/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@salesforce/eslint-config-lwc/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "engines": { + "node": ">=10" } }, "node_modules/@salesforce/eslint-plugin-lightning": { @@ -2106,1750 +2045,1531 @@ } }, "node_modules/@salesforce/sfdx-lwc-jest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/sfdx-lwc-jest/-/sfdx-lwc-jest-1.2.1.tgz", - "integrity": "sha512-KBntqX81/ICOvA7X+KHos7dp9JGsCBwvNTlTfxaQNt9sYJSwCwjtmKKOrlokRofDIj9uFCCIOP5a0ZYi6Dastg==", - "dev": true, - "dependencies": { - "@lwc/compiler": "2.20.6", - "@lwc/engine-dom": "2.20.6", - "@lwc/jest-preset": "^11.4.0", - "@lwc/jest-resolver": "^11.4.0", - "@lwc/jest-serializer": "^11.4.0", - "@lwc/jest-transformer": "^11.4.0", - "@lwc/module-resolver": "2.20.6", - "@lwc/synthetic-shadow": "2.20.6", - "@lwc/wire-service": "2.20.6", - "@salesforce/wire-service-jest-util": "4.0.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@salesforce/sfdx-lwc-jest/-/sfdx-lwc-jest-1.3.0.tgz", + "integrity": "sha512-DT6AjFLldoWqeI1MdcStVhLj3p+XndUrHdPVwUo+CdiBmnTqNSPBDY/snDZJwZZK61M88mKz2xDzNj7xug3i8g==", + "dev": true, + "dependencies": { + "@lwc/compiler": "2.31.0", + "@lwc/engine-dom": "2.31.0", + "@lwc/jest-preset": "11.5.4", + "@lwc/jest-resolver": "11.5.4", + "@lwc/jest-serializer": "11.5.4", + "@lwc/jest-transformer": "11.5.4", + "@lwc/module-resolver": "2.31.0", + "@lwc/synthetic-shadow": "2.31.0", + "@lwc/wire-service": "2.31.0", + "@salesforce/wire-service-jest-util": "4.0.1", "chalk": "^4.1.2", - "fast-glob": "^3.2.10", - "jest": "^28.1.3", - "jest-environment-jsdom": "^28.1.3", - "yargs": "~17.5.1" + "fast-glob": "^3.2.12", + "jest": "27.4.7", + "yargs": "~17.6.2" }, "bin": { "lwc-jest": "bin/sfdx-lwc-jest", "sfdx-lwc-jest": "bin/sfdx-lwc-jest" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/core": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", - "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" + "color-name": "~1.1.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=7.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "node_modules/@salesforce/sfdx-lwc-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "jest-get-type": "^28.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "node_modules/@salesforce/wire-service-jest-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@salesforce/wire-service-jest-util/-/wire-service-jest-util-4.0.1.tgz", + "integrity": "sha512-6u3ZGXDCeRnKSX8WHRpVQAXmGiee6NkhmQb0gXmcPAm8zW/Q7o7lRJNvXKnxnXY7qyiKXVYDQAFKJjtGpaCfjw==", "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "peerDependencies": { + "@lwc/engine-dom": "^2.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/globals": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/reporters": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", - "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.25.23", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.23.tgz", + "integrity": "sha512-VEB8ygeP42CFLWyAJhN5OklpxUliqdNEUcXb4xZ/CINqtYGTjL5ukluKdKzQ0iWdUxyQ7B0539PAUhHKrCNWSQ==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "type-detect": "4.0.8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 6" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "node_modules/@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@babel/types": "^7.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/test-sequencer": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", - "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "dependencies": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "node_modules/@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", "dev": true, "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@babel/types": "^7.3.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@types/node": "*" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/babel-plugin-component": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.20.6.tgz", - "integrity": "sha512-iOzQFfe8gsmUAZoQSLG8k+vZl8bIfipaQXHWmM/sKLOUgxwW6eo4eD9sjRFBb0R/cPtu0t7zdpcXndPcTbPL1A==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "~7.18.6", - "@lwc/errors": "2.20.6", - "@lwc/shared": "2.20.6", - "line-column": "~1.0.2" - }, - "peerDependencies": { - "@babel/core": "^7" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/compiler": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.20.6.tgz", - "integrity": "sha512-xZwi2x0CWvuINNIh1CmP4jtigjLvrRTyK+VQmQOdrmj3fSuT7E847R1zgpY9ZVkk+uuxQioTJfxw2fMxp8CkeQ==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "dependencies": { - "@babel/core": "~7.18.9", - "@babel/plugin-proposal-class-properties": "~7.18.6", - "@babel/plugin-proposal-object-rest-spread": "~7.18.9", - "@lwc/babel-plugin-component": "2.20.6", - "@lwc/errors": "2.20.6", - "@lwc/shared": "2.20.6", - "@lwc/style-compiler": "2.20.6", - "@lwc/template-compiler": "2.20.6" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/engine-dom": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.20.6.tgz", - "integrity": "sha512-zx0PdQ0qyJJ+86wSorJrg4cU24Vb9fl5+mhggKHD7hOdey+DiEK5Wp5WcEqaUDWS9I0i3OfX1tw5TphxntOZyw==", + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", + "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", "dev": true }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/errors": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.20.6.tgz", - "integrity": "sha512-GckFh4a+WVzSW7KHURqWBfmfgBGoDlEcjH4KWxGjGrjumgwNBH8h+9AAoOang5lFdWy1rTApIrIr3hl30SKu/Q==", + "node_modules/@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/shared": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.20.6.tgz", - "integrity": "sha512-2ZCcUBOUAdOW6dhhixZztAp+Du66YeHVywpU2SBFBQQHt1GSGjAWCv5YvZKcR/Hvon3BwdgBfnds9EArcDyVBw==", + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/style-compiler": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.20.6.tgz", - "integrity": "sha512-Z7ji3SB8JHTSoirbM2JXw9TSK7XfpkG+czD32bWJ6tJrr675rK9b7kIRNVfWSUxD+9cROTbBkQroCeeBH2FWMQ==", + "node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", "dev": true, "dependencies": { - "@lwc/shared": "2.20.6", - "postcss": "~8.4.14", - "postcss-selector-parser": "~6.0.9", - "postcss-value-parser": "~4.2.0", - "string.prototype.matchall": "^4.0.7" + "@types/yargs-parser": "*" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/synthetic-shadow": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.20.6.tgz", - "integrity": "sha512-3c5uq+a9ISJFNbM/1E3UTSlaXspjuqrwDL/PmzD7ad3yoK/ij3L4G1lrtKs2o0lATFHgN900zAscFTEpzeT1Iw==", + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/@lwc/template-compiler": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.20.6.tgz", - "integrity": "sha512-r61f8pFDSHFx0EoUW58zvzOCZUfP1mjlcoevfURwcE2x7hH/8EjBWQBHhENao56iv4rfQL65MWDcbhc16rg7pA==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz", + "integrity": "sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==", "dev": true, "dependencies": { - "@lwc/errors": "2.20.6", - "@lwc/shared": "2.20.6", - "acorn": "~8.7.1", - "astring": "~1.8.3", - "estree-walker": "~2.0.2", - "he": "~1.2.0", - "parse5": "~6.0.1" + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "node_modules/@typescript-eslint/types": { + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.1.tgz", + "integrity": "sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz", + "integrity": "sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/babel-plugin-jest-hoist": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", - "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/@typescript-eslint/utils": { + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.1.tgz", + "integrity": "sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==", "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz", + "integrity": "sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@typescript-eslint/types": "5.36.1", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@xml-tools/parser": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", + "integrity": "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==", + "dev": true, + "dependencies": { + "chevrotain": "7.1.1" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.4.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.4.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" - }, - "bin": { - "jest": "bin/jest.js" + "debug": "4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">= 6.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-changed-files": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", - "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-circus": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", - "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-cli": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", - "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "type-fest": "^0.21.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-config": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", - "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-config/node_modules/babel-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", - "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "@jest/transform": "^28.1.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">=4" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-config/node_modules/babel-preset-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", - "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^28.1.3", - "babel-preset-current-node-syntax": "^1.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">= 8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-docblock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", - "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-each": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", - "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "dependencies": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "node_modules/astring": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.4.tgz", + "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==", "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "bin": { + "astring": "bin/astring" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-leak-detector": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", - "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", - "dev": true, - "dependencies": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "node_modules/auto-changelog": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", + "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "commander": "^7.2.0", + "handlebars": "^4.7.7", + "node-fetch": "^2.6.1", + "parse-github-url": "^1.0.2", + "semver": "^7.3.5" + }, + "bin": { + "auto-changelog": "src/index.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8.3" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "node_modules/auto-changelog/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "node_modules/axios": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.2.tgz", + "integrity": "sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==", "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-resolve": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", - "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-resolve-dependencies": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", - "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-runner": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", - "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "node_modules/babel-jest/node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "dependencies": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-runtime": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", - "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "node_modules/babel-jest/node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-validate": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", - "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" + "color-name": "~1.1.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=7.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.3.tgz", + "integrity": "sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==", "dev": true, "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/babel-preset-jest": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.3.tgz", + "integrity": "sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "babel-plugin-jest-hoist": "^29.4.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@salesforce/sfdx-lwc-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/@salesforce/wire-service-jest-util": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@salesforce/wire-service-jest-util/-/wire-service-jest-util-4.0.0.tgz", - "integrity": "sha512-YJO/bMq5l6IYIZG6bAqYzzbmZMPCzB2GE2TKGLA1U7B9HpmNHZS7DdDcy154P03dfLSgF+tgVYeklh2HRYGk9g==", + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, - "peerDependencies": { - "@lwc/engine-dom": "^2.0.0" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "dependencies": { - "@hapi/hoek": "^9.0.0" + "node-int64": "^0.4.0" } }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true - }, - "node_modules/@sinclair/typebox": { - "version": "0.24.34", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz", - "integrity": "sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" + "engines": { + "node": ">=6" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=6" } }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "node_modules/caniuse-lite": { + "version": "1.0.30001388", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001388.tgz", + "integrity": "sha512-znVbq4OUjqgLxMxoNX2ZeeLR0d7lcDiE5uJ4eUiWdml1J1EkxbnQq6opT9jb9SMfJxB0XA16/ziHwni4u1I3GQ==", "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "engines": { + "node": ">=10" } }, - "node_modules/@types/babel__traverse": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz", - "integrity": "sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==", + "node_modules/chevrotain": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", + "integrity": "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==", "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "regexp-to-ast": "0.5.0" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true }, - "node_modules/@types/jsdom": { - "version": "16.2.15", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz", - "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "dependencies": { - "@types/node": "*", - "@types/parse5": "^6.0.3", - "@types/tough-cookie": "*" + "engines": { + "node": ">=6" } }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.7.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", - "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", - "dev": true - }, - "node_modules/@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", - "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.12.tgz", - "integrity": "sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.36.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz", - "integrity": "sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==", + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/visitor-keys": "5.36.1" + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.36.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.1.tgz", - "integrity": "sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==", + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.36.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz", - "integrity": "sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/visitor-keys": "5.36.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.36.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.1.tgz", - "integrity": "sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.1", - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/typescript-estree": "5.36.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.36.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz", - "integrity": "sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.1", - "eslint-visitor-keys": "^3.3.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=12" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/@xml-tools/parser": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", - "integrity": "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==", + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "chevrotain": "7.1.1" + "color-name": "1.1.3" } }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.8" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">= 10" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "dependencies": { + "safe-buffer": "~5.1.1" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=0.4.0" + "node": ">= 8" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "dependencies": { - "debug": "4" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">= 6.0.0" + "node": ">=4" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "cssom": "~0.3.6" }, "engines": { "node": ">=8" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=10" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "ms": "2.1.2" }, "engines": { - "node": ">=8" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, "engines": { - "node": ">= 8" + "node": ">=0.4.0" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.0.0" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "webidl-conversions": "^5.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/astring": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", - "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==", - "dev": true, - "bin": { - "astring": "bin/astring" - } + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "node_modules/electron-to-chromium": { + "version": "1.4.241", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.241.tgz", + "integrity": "sha512-e7Wsh4ilaioBZ5bMm6+F4V5c11dh56/5Jwz7Hl5Tu1J7cnB+Pqx5qIF2iC7HPpfyQMqGSvvLP5bBAIDd2gAtGw==", "dev": true }, - "node_modules/auto-changelog": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", - "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", "dev": true, - "dependencies": { - "commander": "^7.2.0", - "handlebars": "^4.7.7", - "node-fetch": "^2.6.1", - "parse-github-url": "^1.0.2", - "semver": "^7.3.5" - }, - "bin": { - "auto-changelog": "src/index.js" - }, "engines": { - "node": ">=8.3" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/auto-changelog/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "is-arrayish": "^0.2.1" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "node_modules/es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, "engines": { "node": ">= 0.4" }, @@ -3857,1219 +3577,1114 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axios": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.2.tgz", - "integrity": "sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/babel-jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.2.tgz", - "integrity": "sha512-yTu4/WSi/HzarjQtrJSwV+/0maoNt+iP0DmpvFJdv9yY+5BuNle8TbheHzzcSWj5gIHfuhpbLYHWRDYhWKyeKQ==", + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, - "peer": true, "dependencies": { - "@jest/transform": "^29.0.2", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.0.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">= 0.4" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, - "peer": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "has": "^1.0.3" } }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "peer": true, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "object.assign": "^4.1.0" + "engines": { + "node": ">=4.0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.2.tgz", - "integrity": "sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg==", + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.8.0" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "prelude-ls": "~1.1.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/babel-preset-jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.0.2.tgz", - "integrity": "sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA==", + "node_modules/eslint": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.0.2", - "babel-preset-current-node-syntax": "^1.0.0" + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "ms": "^2.1.1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "debug": "^3.2.7" }, "engines": { - "node": ">=8" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } }, - "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - }, - "bin": { - "browserslist": "cli.js" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "node-int64": "^0.4.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "ms": "^2.1.1" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001388", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001388.tgz", - "integrity": "sha512-znVbq4OUjqgLxMxoNX2ZeeLR0d7lcDiE5uJ4eUiWdml1J1EkxbnQq6opT9jb9SMfJxB0XA16/ziHwni4u1I3GQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/eslint-plugin-jest": { + "version": "27.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", + "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@typescript-eslint/utils": "^5.10.0" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/eslint-restricted-globals": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.2.0.tgz", + "integrity": "sha512-kwYJALm5KS2QW3Mc1PgObO4V+pTR6RQtRT65L1GQILlEnAhabUQqGAX7/qUjoQR4KZJKehWpBtyDEiDecwmY9A==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=10" + "node": ">=8.0.0" } }, - "node_modules/chevrotain": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", - "integrity": "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==", + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "regexp-to-ast": "0.5.0" + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=4.0" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.8" + "node": "*" } }, - "node_modules/commander": { + "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">= 8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "bin": { - "cssesc": "bin/cssesc" + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { - "cssom": "~0.3.6" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, "engines": { - "node": ">=12" + "node": ">=4.0" } }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=12" + "node": ">=4.0" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=4.0" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">= 0.8.0" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/diff-sequences": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz", - "integrity": "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 6" } }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "node_modules/electron-to-chromium": { - "version": "1.4.241", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.241.tgz", - "integrity": "sha512-e7Wsh4ilaioBZ5bMm6+F4V5c11dh56/5Jwz7Hl5Tu1J7cnB+Pqx5qIF2iC7HPpfyQMqGSvvLP5bBAIDd2gAtGw==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "bser": "2.1.1" } }, - "node_modules/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" + "node": ">=8" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" + "is-callable": "^1.1.3" } }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 6" } }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.8.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fx": { + "version": "20.0.2", + "resolved": "https://registry.npmjs.org/fx/-/fx-20.0.2.tgz", + "integrity": "sha512-BgZNylpsDf5V0c4DwjWnre2dld9YbEbdNUnXzOC2WJv4R/AnJG8cu7mBERhkqxue3S3hgmJr3lqoqeKb2PedGQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" + "@medv/blessed": "^2.0.1", + "chalk": "^4.1.0", + "indent-string": "^4.0.0", + "lossless-json": "^1.0.4", + "string-width": "^4.2.0" }, "bin": { - "eslint": "bin/eslint.js" + "fx": "index.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "node_modules/fx/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/fx/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "node_modules/fx/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "debug": "^3.2.7" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/fx/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/fx/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "node_modules/fx/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "node": ">=8" } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=8.0.0" } }, - "node_modules/eslint-plugin-jest": { - "version": "27.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", - "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "@typescript-eslint/utils": "^5.10.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-restricted-globals": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.2.0.tgz", - "integrity": "sha512-kwYJALm5KS2QW3Mc1PgObO4V+pTR6RQtRT65L1GQILlEnAhabUQqGAX7/qUjoQR4KZJKehWpBtyDEiDecwmY9A==", - "dev": true - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/brace-expansion": { + "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", @@ -5079,45 +4694,55 @@ "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "*" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "define-properties": "^1.1.3" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, "engines": { "node": ">=10" }, @@ -5125,453 +4750,502 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, "engines": { - "node": ">=4.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4.0" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "get-intrinsic": "^1.1.1" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/esprima": { + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { - "estraverse": "^5.1.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.10" + "node": ">= 6" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=10.17.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, - "dependencies": { - "estraverse": "^5.2.0" + "bin": { + "husky": "lib/bin.js" }, "engines": { - "node": ">=4.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">= 4" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=0.8.19" } }, - "node_modules/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "peer": true, - "dependencies": { - "@jest/expect-utils": "^29.0.2", - "jest-get-type": "^29.0.0", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "node_modules/internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8.6.0" + "node": ">= 0.4" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "dependencies": { - "reusify": "^1.0.4" + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "bser": "2.1.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "has": "^1.0.3" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], "engines": { - "node": ">=4.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "is-callable": "^1.1.3" + "engines": { + "node": ">=0.12.0" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=8" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -5580,84 +5254,161 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fx": { - "version": "20.0.2", - "resolved": "https://registry.npmjs.org/fx/-/fx-20.0.2.tgz", - "integrity": "sha512-BgZNylpsDf5V0c4DwjWnre2dld9YbEbdNUnXzOC2WJv4R/AnJG8cu7mBERhkqxue3S3hgmJr3lqoqeKb2PedGQ==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "dependencies": { - "@medv/blessed": "^2.0.1", - "chalk": "^4.1.0", - "indent-string": "^4.0.0", - "lossless-json": "^1.0.4", - "string-width": "^4.2.0" - }, - "bin": { - "fx": "index.js" - }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fx/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fx/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fx/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fx/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "node_modules/fx/node_modules/has-flag": { + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -5666,7 +5417,7 @@ "node": ">=8" } }, - "node_modules/fx/node_modules/supports-color": { + "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -5678,826 +5429,1048 @@ "node": ">=8" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=6.9.0" + "node": ">=10" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=8" } }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "node_modules/jest": { + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", + "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "@jest/core": "^27.4.7", + "import-local": "^3.0.2", + "jest-cli": "^27.4.7" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, "engines": { - "node": ">=8.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10.13.0" + "node": ">=7.0.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": "*" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "node_modules/jest-circus/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.4.7" + "node": ">=10" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/jest-cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4.0" + "node": ">=7.0.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/jest-cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">= 0.4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "whatwg-encoding": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/jest-config/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, "engines": { - "node": ">=10.17.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "bin": { - "husky": "lib/bin.js" - }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/jest-config/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, "engines": { - "node": ">= 4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.8.19" + "node": ">=7.0.0" } }, - "node_modules/indent-string": { + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "node_modules/internal-slot": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", - "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "node_modules/jest-docblock": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.0.0.tgz", + "integrity": "sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" + "detect-newline": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "has": "^1.0.3" + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/jest-each/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/jest-each/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" }, "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, - "engines": { - "node": ">= 0.4" + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { - "node": ">= 0.4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-stream": { + "node_modules/jest-jasmine2/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/jest-jasmine2/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">= 0.4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/jest-jasmine2/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">= 0.4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "dependencies": { - "isarray": "1.0.0" + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -6506,123 +6479,75 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, "engines": { "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.2.tgz", - "integrity": "sha512-enziNbNUmXTcTaTP/Uq5rV91r0Yqy2UKzLUIabxMpGm9YHz8qpbJhiRnNVNvm6vzWfzt/0o97NEHH8/3udoClA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^29.0.2", - "@jest/types": "^29.0.2", - "import-local": "^3.0.2", - "jest-cli": "^29.0.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, - "node_modules/jest-changed-files": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.0.0.tgz", - "integrity": "sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-circus": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.2.tgz", - "integrity": "sha512-YTPEsoE1P1X0bcyDQi3QIkpt2Wl9om9k2DQRuLFdS5x8VvAKSdYAVJufgvudhnKgM8WHvvAzhBE+1DRQB8x1CQ==", + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, - "peer": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/node": "*", + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", - "p-limit": "^3.1.0", - "pretty-format": "^29.0.2", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { + "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6633,12 +6558,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/chalk": { + "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6650,12 +6574,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-circus/node_modules/color-convert": { + "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6663,29 +6586,58 @@ "node": ">=7.0.0" } }, - "node_modules/jest-circus/node_modules/color-name": { + "node_modules/jest-message-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "node_modules/jest-circus/node_modules/has-flag": { + "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-circus/node_modules/supports-color": { + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6693,47 +6645,85 @@ "node": ">=8" } }, - "node_modules/jest-cli": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.2.tgz", - "integrity": "sha512-tlf8b+4KcUbBGr25cywIi3+rbZ4+G+SiG8SvY552m9sRZbXPafdmQRyeVE/C/R8K+TiBAMrTIUmV2SlStRJ40g==", + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, - "peer": true, "dependencies": { - "@jest/core": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "@jest/types": "^27.5.1", + "@types/node": "*" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "jest-resolve": "*" }, "peerDependenciesMeta": { - "node-notifier": { + "jest-resolve": { "optional": true } } }, - "node_modules/jest-cli/node_modules/ansi-styles": { + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6744,12 +6734,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-cli/node_modules/chalk": { + "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6761,12 +6750,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/color-convert": { + "node_modules/jest-resolve/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6774,29 +6762,26 @@ "node": ">=7.0.0" } }, - "node_modules/jest-cli/node_modules/color-name": { + "node_modules/jest-resolve/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "node_modules/jest-cli/node_modules/has-flag": { + "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-cli/node_modules/supports-color": { + "node_modules/jest-resolve/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6804,58 +6789,43 @@ "node": ">=8" } }, - "node_modules/jest-config": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.2.tgz", - "integrity": "sha512-RU4gzeUNZAFktYVzDGimDxeYoaiTnH100jkYYZgldqFamaZukF0IqmFx8+QrzVeEWccYg10EEJT3ox1Dq5b74w==", + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, - "peer": true, "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.0.2", - "@jest/types": "^29.0.2", - "babel-jest": "^29.0.2", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", + "emittery": "^0.8.1", "graceful-fs": "^4.2.9", - "jest-circus": "^29.0.2", - "jest-environment-node": "^29.0.2", - "jest-get-type": "^29.0.0", - "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-runner": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.0.2", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-config/node_modules/ansi-styles": { + "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6866,12 +6836,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/chalk": { + "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6883,12 +6852,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/color-convert": { + "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6896,29 +6864,38 @@ "node": ">=7.0.0" } }, - "node_modules/jest-config/node_modules/color-name": { + "node_modules/jest-runner/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "node_modules/jest-config/node_modules/has-flag": { + "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-config/node_modules/supports-color": { + "node_modules/jest-runner/node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6926,28 +6903,44 @@ "node": ">=8" } }, - "node_modules/jest-diff": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.2.tgz", - "integrity": "sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==", - "dev": true, - "peer": true, - "dependencies": { + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "diff-sequences": "^29.0.0", - "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { + "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6958,12 +6951,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-diff/node_modules/chalk": { + "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6975,12 +6967,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/color-convert": { + "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6988,29 +6979,26 @@ "node": ">=7.0.0" } }, - "node_modules/jest-diff/node_modules/color-name": { + "node_modules/jest-runtime/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "node_modules/jest-diff/node_modules/has-flag": { + "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-diff/node_modules/supports-color": { + "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -7018,41 +7006,57 @@ "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.0.0.tgz", - "integrity": "sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==", + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, "dependencies": { - "detect-newline": "^3.0.0" + "@types/node": "*", + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-each": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.2.tgz", - "integrity": "sha512-+sA9YjrJl35iCg0W0VCrgCVj+wGhDrrKQ+YAqJ/DHBC4gcDFAeePtRRhpJnX9gvOZ63G7gt52pwp2PesuSEx0Q==", + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, - "peer": true, "dependencies": { - "@jest/types": "^29.0.2", + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "jest-get-type": "^29.0.0", - "jest-util": "^29.0.2", - "pretty-format": "^29.0.2" + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-each/node_modules/ansi-styles": { + "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -7063,12 +7067,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/chalk": { + "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7080,12 +7083,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/color-convert": { + "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -7093,117 +7095,98 @@ "node": ">=7.0.0" } }, - "node_modules/jest-each/node_modules/color-name": { + "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "node_modules/jest-each/node_modules/has-flag": { + "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-environment-jsdom": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz", - "integrity": "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==", + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/jsdom": "^16.2.4", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3", - "jsdom": "^19.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" + "node": ">=10" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.24.1" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/types": "^27.5.1", "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -7218,7 +7201,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/chalk": { + "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -7234,7 +7217,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/color-convert": { + "node_modules/jest-util/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -7246,13 +7229,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/color-name": { + "node_modules/jest-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-environment-jsdom/node_modules/has-flag": { + "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7261,185 +7244,172 @@ "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-node": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.2.tgz", - "integrity": "sha512-4Fv8GXVCToRlMzDO94gvA8iOzKxQ7rhAbs8L+j8GPyTxGuUiYkV+63LecGeVdVhsL2KXih1sKnoqmH6tp89J7Q==", + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/node": "*", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/jest-haste-map": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.2.tgz", - "integrity": "sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==", + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true, "dependencies": { - "@jest/types": "^29.0.2", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-leak-detector": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.2.tgz", - "integrity": "sha512-5f0493qDeAxjUldkBSQg5D1cLadRgZVyWpTQvfJeQwQUpHQInE21AyVHVv64M7P2Ue8Z5EZ4BAcoDS/dSPPgMw==", + "node_modules/jest-validate/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { - "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz", - "integrity": "sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==", + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, - "peer": true, "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-diff": "^29.0.2", - "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "jest-util": "^27.5.1", + "string-length": "^4.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -7450,12 +7420,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { + "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7467,12 +7436,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { + "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -7480,29 +7448,26 @@ "node": ">=7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { + "node_modules/jest-watcher/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { + "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { + "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -7510,516 +7475,424 @@ "node": ">=8" } }, - "node_modules/jest-message-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", - "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "peer": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.0.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10.13.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", "dev": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", "dev": true, - "peer": true + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } }, - "node_modules/jest-message-util/node_modules/has-flag": { + "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=8" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jest-mock": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", - "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, - "peer": true, "dependencies": { - "@jest/types": "^29.0.2", - "@types/node": "*" + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">=10" }, "peerDependencies": { - "jest-resolve": "*" + "canvas": "^2.5.0" }, "peerDependenciesMeta": { - "jest-resolve": { + "canvas": { "optional": true } } }, - "node_modules/jest-regex-util": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.0.0.tgz", - "integrity": "sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==", + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, - "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-resolve": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.2.tgz", - "integrity": "sha512-V3uLjSA+EHxLtjIDKTBXnY71hyx+8lusCqPXvqzkFO1uCGvVpjBfuOyp+KOLBNSuY61kM2jhepiMwt4eiJS+Vw==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.2.tgz", - "integrity": "sha512-fSAu6eIG7wtGdnPJUkVVdILGzYAP9Dj/4+zvC8BrGe8msaUMJ9JeygU0Hf9+Uor6/icbuuzQn5See1uajLnAqg==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "peer": true, - "dependencies": { - "jest-regex-util": "^29.0.0", - "jest-snapshot": "^29.0.2" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.8.0" } }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true, - "peer": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/line-column": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", + "integrity": "sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "isarray": "^1.0.0", + "isobject": "^2.0.0" } }, - "node_modules/jest-runner": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.2.tgz", - "integrity": "sha512-+D82iPZejI8t+SfduOO1deahC/QgLFf8aJBO++Znz3l2ETtOMdM7K4ATsGWzCFnTGio5yHaRifg1Su5Ybza5Nw==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lint-staged": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.2.tgz", + "integrity": "sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==", "dev": true, - "peer": true, "dependencies": { - "@jest/console": "^29.0.2", - "@jest/environment": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.0.0", - "jest-environment-node": "^29.0.2", - "jest-haste-map": "^29.0.2", - "jest-leak-detector": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-resolve": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-util": "^29.0.2", - "jest-watcher": "^29.0.2", - "jest-worker": "^29.0.2", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "cli-truncate": "^3.1.0", + "colorette": "^2.0.19", + "commander": "^9.4.1", + "debug": "^4.3.4", + "execa": "^6.1.0", + "lilconfig": "2.0.6", + "listr2": "^5.0.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.2", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.1.3" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/lint-staged/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^12.20.0 || >=14" } }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/lint-staged/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", "dev": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/lint-staged/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=12.20.0" } }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "peer": true + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/jest-runner/node_modules/has-flag": { + "node_modules/lint-staged/node_modules/mimic-fn": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "peer": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.2.tgz", - "integrity": "sha512-DO6F81LX4okOgjJLkLySv10E5YcV5NHUbY1ZqAUtofxdQE+q4hjH0P2gNsY8x3z3sqgw7O/+919SU4r18Fcuig==", + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, - "peer": true, "dependencies": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/globals": "^29.0.2", - "@jest/source-map": "^29.0.0", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/listr2": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", + "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", "dev": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" + "node": "^14.13.1 || >=16.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.2.tgz", - "integrity": "sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.0.2", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.0.2", - "jest-get-type": "^29.0.0", - "jest-haste-map": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", - "natural-compare": "^1.4.0", - "pretty-format": "^29.0.2", - "semver": "^7.3.5" + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { + "node_modules/listr2/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8030,29 +7903,27 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { + "node_modules/listr2/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8060,76 +7931,85 @@ "node": ">=7.0.0" } }, - "node_modules/jest-snapshot/node_modules/color-name": { + "node_modules/listr2/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "peer": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", - "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, - "peer": true, "dependencies": { - "@jest/types": "^29.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-util/node_modules/ansi-styles": { + "node_modules/log-update/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8140,29 +8020,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { + "node_modules/log-update/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8170,3483 +8032,2723 @@ "node": ">=7.0.0" } }, - "node_modules/jest-util/node_modules/color-name": { + "node_modules/log-update/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/jest-validate": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.2.tgz", - "integrity": "sha512-AeRKm7cEucSy7tr54r3LhiGIXYvOILUwBM1S7jQkKs6YelwAlWKsmZGVrQR7uwsd31rBTnR5NQkODi1Z+6TKIQ==", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "peer": true, "dependencies": { - "@jest/types": "^29.0.2", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.0.0", - "leven": "^3.1.0", - "pretty-format": "^29.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/lossless-json": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-1.0.5.tgz", + "integrity": "sha512-RicKUuLwZVNZ6ZdJHgIZnSeA05p8qWc5NW0uR96mpPIjN9WDLUg9+kj1esQU1GkPn9iLZVKatSQK5gyiaFHgJA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" + "tmpl": "1.0.5" + } + }, + "node_modules/marked": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", + "dev": true, + "bin": { + "marked": "bin/marked.js" }, "engines": { - "node": ">=7.0.0" + "node": ">= 12" } }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "peer": true, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/jest-watcher": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.2.tgz", - "integrity": "sha512-ds2bV0oyUdYoyrUTv4Ga5uptz4cEvmmP/JzqDyzZZanvrIn8ipxg5l3SDOAIiyuAx1VdHd2FBzeXPFO5KPH8vQ==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^29.0.2", - "string-length": "^4.0.1" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "mime-db": "1.52.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", "dev": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=7.0.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/jest-worker": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.2.tgz", - "integrity": "sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==", + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, - "peer": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "peer": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, - "node_modules/joi": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", - "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } + "node_modules/nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "canvas": "^2.5.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "mimic-fn": "^2.1.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, "engines": { - "node": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/leven": { + "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/line-column": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", - "integrity": "sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "isarray": "^1.0.0", - "isobject": "^2.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/lint-staged": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.2.tgz", - "integrity": "sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "callsites": "^3.0.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" + "node": ">=6" } }, - "node_modules/lint-staged/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "node_modules/parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", "dev": true, + "bin": { + "parse-github-url": "cli.js" + }, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=12.20.0" + "node": ">=8" } }, - "node_modules/lint-staged/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/mimic-fn": { + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" + "bin": { + "pidtree": "bin/pidtree.js" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10" } }, - "node_modules/lint-staged/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "find-up": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/listr2": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", - "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "node": ">=8" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "p-limit": "^2.2.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/listr2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "bin": { + "prettier": "bin-prettier.js" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/prettier-plugin-apex": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-apex/-/prettier-plugin-apex-1.12.0.tgz", + "integrity": "sha512-8tnF2Pp5RMoEYipgFudrujlWRlXqags4lJZD7xSgordX+Bsh8Pq1jXPihkkquHKy4PeZMIuJAtYIEOFLBQIv/w==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "axios": "^1.0.0", + "jest-docblock": "^29.0.0", + "wait-on": "^6.0.0", + "yargs": "^17.0.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "bin": { + "apex-ast-serializer": "vendor/apex-ast-serializer/bin/apex-ast-serializer", + "apex-ast-serializer-http": "vendor/apex-ast-serializer/bin/apex-ast-serializer-http", + "start-apex-server": "dist/bin/start-apex-server.js", + "stop-apex-server": "dist/bin/stop-apex-server.js" }, "engines": { - "node": ">=10" + "node": ">= 14.0.0" }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "peerDependencies": { + "prettier": "^2.0.0" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/pretty-format": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", + "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/lossless-json": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-1.0.5.tgz", - "integrity": "sha512-RicKUuLwZVNZ6ZdJHgIZnSeA05p8qWc5NW0uR96mpPIjN9WDLUg9+kj1esQU1GkPn9iLZVKatSQK5gyiaFHgJA==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/marked": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", - "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", - "dev": true, - "bin": { - "marked": "bin/marked.js" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">= 12" + "node": ">= 6" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, - "engines": { - "node": ">= 0.6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/regexp-to-ast": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", + "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "dependencies": { - "mime-db": "1.52.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, "bin": { - "nanoid": "bin/nanoid.cjs" + "resolve": "bin/resolve" }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "dependencies": { - "whatwg-url": "^5.0.0" + "resolve-from": "^5.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=8" } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { + "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "engines": { - "node": ">= 0.4" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "xmlchars": "^2.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "dependencies": { - "wrappy": "1" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/parse-github-url": { + "node_modules/source-map-js": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "bin": { - "parse-github-url": "cli.js" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.6.19" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" }, - "engines": { - "node": ">=0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, - "engines": { - "node": ">= 6" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=8" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/prettier-plugin-apex": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-apex/-/prettier-plugin-apex-1.12.0.tgz", - "integrity": "sha512-8tnF2Pp5RMoEYipgFudrujlWRlXqags4lJZD7xSgordX+Bsh8Pq1jXPihkkquHKy4PeZMIuJAtYIEOFLBQIv/w==", + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, "dependencies": { - "axios": "^1.0.0", - "jest-docblock": "^29.0.0", - "wait-on": "^6.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "apex-ast-serializer": "vendor/apex-ast-serializer/bin/apex-ast-serializer", - "apex-ast-serializer-http": "vendor/apex-ast-serializer/bin/apex-ast-serializer-http", - "start-apex-server": "dist/bin/start-apex-server.js", - "stop-apex-server": "dist/bin/stop-apex-server.js" + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" }, "engines": { - "node": ">= 14.0.0" + "node": ">=8" }, - "peerDependencies": { - "prettier": "^2.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-format": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", - "integrity": "sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 6" + "node": "*" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "node_modules/regexp-to-ast": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", - "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "is-number": "^7.0.0" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "dependencies": { - "resolve-from": "^5.0.0" + "punycode": "^2.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "tslib": "^1.8.1" }, "engines": { - "node": ">=8" + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "prelude-ls": "^1.2.1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" + "engines": { + "node": ">=4" } }, - "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "dependencies": { - "tslib": "^2.1.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" + "is-typedarray": "^1.0.0" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", "dev": true, + "peer": true, "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=8" + "node": ">=4.2.0" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/uglify-js": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", + "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 4.0.0" } }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "node_modules/update-browserslist-db": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "engines": { - "node": ">=12" + "bin": { + "browserslist-lint": "cli.js" }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "punycode": "^2.1.0" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, - "node_modules/source-map-js": { + "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.12.0" } }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": ">= 8" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, "dependencies": { - "escape-string-regexp": "^2.0.0" + "xml-name-validator": "^3.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", "dev": true, + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, "engines": { - "node": ">=8" + "node": ">=10.0.0" } }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "node_modules/wait-on/node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", "dev": true, - "engines": { - "node": ">=0.6.19" + "dependencies": { + "follow-redirects": "^1.14.7" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "makeerror": "1.0.12" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": ">=10.4" } }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "iconv-lite": "0.4.24" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "isexe": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "engines": { - "node": ">=8" + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=12" } }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "@babel/compat-data": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", "dev": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "@babel/core": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", "dev": true, - "engines": { - "node": ">=4" + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "@babel/eslint-parser": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "requires": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" } }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "@babel/generator": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "requires": { + "@babel/types": "^7.21.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, - "engines": { - "node": ">=6" + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } } }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "@babel/helper-create-class-features-plugin": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", + "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" } }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "requires": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "@babel/helper-member-expression-to-functions": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", "dev": true, - "engines": { - "node": ">=4" + "requires": { + "@babel/types": "^7.21.0" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "@babel/helper-module-transforms": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.0.tgz", + "integrity": "sha512-eD/JQ21IG2i1FraJnTMbUarAUkA7G988ofehG5MDCRXaUU91rEBJuCeSoou2Sk1y4RbLYXzqEg1QLwEmRU4qcQ==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" } }, - "node_modules/typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/uglify-js": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", - "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "@babel/types": "^7.20.2" } }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, - "engines": { - "node": ">= 4.0.0" + "requires": { + "@babel/types": "^7.20.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", - "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", "dev": true, - "dependencies": { - "punycode": "^2.1.0" + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "@babel/parser": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.1.tgz", + "integrity": "sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==", "dev": true }, - "node_modules/v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, - "node_modules/w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" } }, - "node_modules/wait-on": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", - "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "dependencies": { - "axios": "^0.25.0", - "joi": "^17.6.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.5.4" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=10.0.0" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/wait-on/node_modules/axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "dependencies": { - "follow-redirects": "^1.14.7" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "dependencies": { - "makeerror": "1.0.12" + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "@babel/plugin-syntax-decorators": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz", + "integrity": "sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==", "dev": true, - "engines": { - "node": ">=12" + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" } }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "engines": { - "node": ">=12" + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, - "node_modules/whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "@babel/plugin-transform-modules-commonjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", - "dev": true, - "engines": { - "node": ">= 14" + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" } }, - "node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "@babel/plugin-transform-parameters": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" } }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "@babel/plugin-transform-typescript": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz", + "integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==", "dev": true, - "engines": { - "node": ">=12" + "requires": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "@babel/preset-typescript": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", + "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", "dev": true, "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-transform-typescript": "^7.21.0" } }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" } }, - "@babel/compat-data": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", - "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", - "dev": true - }, - "@babel/core": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.13.tgz", - "integrity": "sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==", + "@babel/traverse": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.0.tgz", + "integrity": "sha512-Xdt2P1H4LKTO8ApPfnO1KmzYMFpp7D/EinoXzLYN/cHcBNrVCAkAtGUcXnHXrl/VGktureU6fkQrHSBE2URfoA==", "dev": true, "requires": { - "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.13", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.13", - "@babel/types": "^7.18.13", - "convert-source-map": "^1.7.0", + "@babel/generator": "^7.21.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.0", + "@babel/types": "^7.21.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "globals": "^11.1.0" } }, - "@babel/eslint-parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "@babel/types": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.0.tgz", + "integrity": "sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow==", "dev": true, "requires": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" } }, - "@babel/generator": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", - "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "requires": { - "@babel/types": "^7.20.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true } } }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@hapi/hoek": "^9.0.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" }, "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", - "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "dev": true - }, - "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", - "dev": true - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz", - "integrity": "sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", - "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.12.tgz", - "integrity": "sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-typescript": "^7.18.6" - } - }, - "@babel/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" - } - }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "minimatch": { @@ -11756,17 +10858,16 @@ "dev": true }, "@jest/console": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.2.tgz", - "integrity": "sha512-Fv02ijyhF4D/Wb3DvZO3iBJQz5DnzpJEIDBDbvje8Em099N889tNMUnBw7SalmSuOI+NflNG40RA1iK71kImPw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" }, "dependencies": { @@ -11775,7 +10876,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -11785,7 +10885,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11796,7 +10895,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11805,22 +10903,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -11828,38 +10923,37 @@ } }, "@jest/core": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.2.tgz", - "integrity": "sha512-imP5M6cdpHEOkmcuFYZuM5cTG1DAF7ZlVNCq1+F7kbqme2Jcl+Kh4M78hihM76DJHNkurbv4UVOnejGxBKEmww==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, - "peer": true, "requires": { - "@jest/console": "^29.0.2", - "@jest/reporters": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "ci-info": "^3.2.0", + "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.0.0", - "jest-config": "^29.0.2", - "jest-haste-map": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-resolve-dependencies": "^29.0.2", - "jest-runner": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", - "jest-watcher": "^29.0.2", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -11869,7 +10963,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -11879,7 +10972,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11890,7 +10982,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11899,22 +10990,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -11922,99 +11010,73 @@ } }, "@jest/environment": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.2.tgz", - "integrity": "sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, - "peer": true, "requires": { - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^29.0.2" - } - }, - "@jest/expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==", - "dev": true, - "peer": true, - "requires": { - "expect": "^29.0.2", - "jest-snapshot": "^29.0.2" - } - }, - "@jest/expect-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.2.tgz", - "integrity": "sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==", - "dev": true, - "peer": true, - "requires": { - "jest-get-type": "^29.0.0" + "jest-mock": "^27.5.1" } }, "@jest/fake-timers": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.2.tgz", - "integrity": "sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^29.0.2", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" } }, "@jest/globals": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.2.tgz", - "integrity": "sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, - "peer": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/types": "^29.0.2", - "jest-mock": "^29.0.2" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" } }, "@jest/reporters": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.2.tgz", - "integrity": "sha512-Kr41qejRQHHkCgWHC9YwSe7D5xivqP4XML+PvgwsnRFaykKdNflDUb4+xLXySOU+O/bPkVdFpGzUpVNSJChCrw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, - "peer": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.3", + "glob": "^7.1.2", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", + "source-map": "^0.6.0", "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" + "v8-to-istanbul": "^8.1.0" }, "dependencies": { "ansi-styles": { @@ -12022,7 +11084,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -12032,7 +11093,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12043,7 +11103,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -12052,22 +11111,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -12075,74 +11131,70 @@ } }, "@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", "dev": true, "requires": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.25.16" } }, "@jest/source-map": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.0.0.tgz", - "integrity": "sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, - "peer": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.15", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" } }, "@jest/test-result": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.2.tgz", - "integrity": "sha512-b5rDc0lLL6Kx73LyCx6370k9uZ8o5UKdCpMS6Za3ke7H9y8PtAU305y6TeghpBmf2In8p/qqi3GpftgzijSsNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, - "peer": true, "requires": { - "@jest/console": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.2.tgz", - "integrity": "sha512-fsyZqHBlXNMv5ZqjQwCuYa2pskXCO0DVxh5aaVCuAtwzHuYEGrhordyEncBLQNuCGQSYgElrEEmS+7wwFnnMKw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, - "peer": true, "requires": { - "@jest/test-result": "^29.0.2", + "@jest/test-result": "^27.5.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "slash": "^3.0.0" + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" } }, "@jest/transform": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.2.tgz", - "integrity": "sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, - "peer": true, "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.0.2", - "@jridgewell/trace-mapping": "^0.3.15", + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.1.0", + "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "dependencies": { "ansi-styles": { @@ -12150,7 +11202,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -12160,7 +11211,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12171,7 +11221,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -12180,22 +11229,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -12203,17 +11249,15 @@ } }, "@jest/types": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.2.tgz", - "integrity": "sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, - "peer": true, "requires": { - "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^17.0.8", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0" }, "dependencies": { @@ -12222,7 +11266,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -12232,7 +11275,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12243,7 +11285,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -12252,22 +11293,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -12303,164 +11341,199 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@lwc/babel-plugin-component": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.23.2.tgz", - "integrity": "sha512-hO5PKvq8jD5uYHDnOBnRhwNDHlPtUEXVL4VN8eGfXQJNue51mrLwQGCACs5Mme+X2aY302nsyGFiZMuS5Y28Tw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.31.0.tgz", + "integrity": "sha512-Zx1w0eNhV2O9dP42PEg0PmhAfjA3V2L/gYbc9oBlfC12nAZIXsFOLqqnhECA2clHiJxFNSiCIf77gVtN7cRGcg==", "dev": true, - "peer": true, "requires": { "@babel/helper-module-imports": "~7.18.6", - "@lwc/errors": "2.23.2", - "@lwc/shared": "2.23.2", + "@lwc/errors": "2.31.0", + "@lwc/shared": "2.31.0", "line-column": "~1.0.2" } }, "@lwc/compiler": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.23.2.tgz", - "integrity": "sha512-Myj24zhdgJZ6mM95/qEZFkV5Qv2P5Ujd7EKlOmCg1WLmY29O2hHkzrtlLz3+xPo3JmYtCbvbGxsDU1Gr/fL4Cw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.31.0.tgz", + "integrity": "sha512-8Xseow7Ww0lsHeVMNm9795BRDx+pDzlFPtojCzbTwHY+sVRNf92qnnD+EgnYzZ+77YkksuuNgPoTZBYPufJFZQ==", "dev": true, - "peer": true, "requires": { - "@babel/core": "~7.18.13", + "@babel/core": "~7.20.2", "@babel/plugin-proposal-class-properties": "~7.18.6", - "@babel/plugin-proposal-object-rest-spread": "~7.18.9", - "@lwc/babel-plugin-component": "2.23.2", - "@lwc/errors": "2.23.2", - "@lwc/shared": "2.23.2", - "@lwc/style-compiler": "2.23.2", - "@lwc/template-compiler": "2.23.2" + "@babel/plugin-proposal-object-rest-spread": "~7.20.2", + "@lwc/babel-plugin-component": "2.31.0", + "@lwc/errors": "2.31.0", + "@lwc/shared": "2.31.0", + "@lwc/style-compiler": "2.31.0", + "@lwc/template-compiler": "2.31.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + } + } } }, "@lwc/engine-dom": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.23.2.tgz", - "integrity": "sha512-XEfn3boHv7RLWevOMwKawxFCrs9btbvyi5XaFsclwkrqEBZa+k5px5vyYEsCJozrvz2ddHkhcuZpG7jITPwNKQ==", - "dev": true, - "peer": true + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.31.0.tgz", + "integrity": "sha512-0J7MSIdjp7C2ufClAtEm937gNKld94+p49yMHSzfVLVEW5aZfGp3ThEvACgsEGmQKQMBwqOByaYGhcYXSRiSUw==", + "dev": true }, "@lwc/engine-server": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/engine-server/-/engine-server-2.23.2.tgz", - "integrity": "sha512-Pc3e2WpGEsUhne9ZSX3DpWNz/AU83QSBOAbIBzLGF8WOzRfV50X+werEqmbWtw+tNCY6IVf/05QD95CYxiqN5A==", + "version": "2.37.3", + "resolved": "https://registry.npmjs.org/@lwc/engine-server/-/engine-server-2.37.3.tgz", + "integrity": "sha512-+XDzPN3AakvnnOxHOlUuuHphMU28Ka22qCgPs9fZ+kQEQhnwYpgn/7wTvECWGuEtW8e0ys4boyytiIo/IoCCFA==", "dev": true, "peer": true }, "@lwc/errors": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.23.2.tgz", - "integrity": "sha512-rgqdd6aQja4T8ysmt2L1o9Aq+VWCtifcJv1FB/hNs1g2KloxZyZkHtK6Y+Tr4IXdgiH5LaT0L3tiQA3X4vssoQ==", - "dev": true, - "peer": true + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.31.0.tgz", + "integrity": "sha512-3sjby4FsYz1mUVlaAtS2hqISxy9SoDe2POZE2weZvAhkvFXG3ijRi8Sc9uGeta2akv/Df14tpRk+hesHdYoXYQ==", + "dev": true }, "@lwc/eslint-plugin-lwc": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-1.5.1.tgz", - "integrity": "sha512-Jj27i4oiqYj9sgryhfOD0rdpDMNP+S1EzaTLgZPqO/MQg+hCd4EtcAXzwPFCs+xY9u1zwsztuQalqXhAP4JZ8Q==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-1.6.2.tgz", + "integrity": "sha512-Oc2FpOA0/RRl10SdOjmj8TG1xdTM2nfmD9urQIUOLl3n5s14HQNljLGSYZm8lBswp0m7HlGp36kxyka40Vw/qw==", "dev": true, "requires": { - "minimatch": "^5.1.2" + "globals": "^13.20.0", + "minimatch": "^6.2.0" + }, + "dependencies": { + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } } }, "@lwc/jest-preset": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@lwc/jest-preset/-/jest-preset-11.5.0.tgz", - "integrity": "sha512-tg+I0r9Crh+ab8VwMqjptf/MxjRpdOVvpXWkBBgIfRC7VqRswZ+i42/Gqe4ZpjujQiNJybBAf+UDuVIF+9vspg==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@lwc/jest-preset/-/jest-preset-11.5.4.tgz", + "integrity": "sha512-Ei4rp+v7Uz5U2VtncFUN3g58SZ4/Q5z7JpaYy8jjD6Pc/J+K0rqtNpJpuZ0DI3CXvtpFZdKGtt5O8ANjIMSrrg==", "dev": true, "requires": { - "@lwc/jest-resolver": "11.5.0", - "@lwc/jest-serializer": "11.5.0", - "@lwc/jest-transformer": "11.5.0" + "@lwc/jest-resolver": "11.5.4", + "@lwc/jest-serializer": "11.5.4", + "@lwc/jest-transformer": "11.5.4" } }, "@lwc/jest-resolver": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@lwc/jest-resolver/-/jest-resolver-11.5.0.tgz", - "integrity": "sha512-vTsJhInWrlfq74CaytI7lLCKMpTKLD1NY2CNvhKq5LYM6nSGWxJUTF26ZypfDtCp/7mFhld0dixJPIkZrl94OQ==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@lwc/jest-resolver/-/jest-resolver-11.5.4.tgz", + "integrity": "sha512-I1s+Fb05jmX+l6GeigBDwwzUoxVO1qBZMQNdu6miCNdnVJ15SZxy6T61pYBY1AkiJrVVl72tkFjHblMMNpNBoA==", "dev": true, "requires": {} }, "@lwc/jest-serializer": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@lwc/jest-serializer/-/jest-serializer-11.5.0.tgz", - "integrity": "sha512-et9DIv+TMW1Emf2I0puimXiJCysFfbsYmDTMxWjQWa0lloRn56EA1/5B8cvTNbKZMxwIYBo+T5Zr0zFqkH+SXg==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@lwc/jest-serializer/-/jest-serializer-11.5.4.tgz", + "integrity": "sha512-hivUuejZKRVEPxHFnG5O4Hz/do581u0uWLCvKxh9HT06WMeiW+grCnrzWnrjFvLv5GcFfZchj0bGAj6UFuOObA==", "dev": true, "requires": { - "pretty-format": "^29.0.1" + "pretty-format": "^29.3.1" } }, "@lwc/jest-transformer": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@lwc/jest-transformer/-/jest-transformer-11.5.0.tgz", - "integrity": "sha512-N8j3NbZAslB3P5j9SkKi2hUUKEm/O9LBBg15A78CDFOM3zmoXPqImmjaoiUDlJuGo0ycZ5jzKRidPt6Dpw+oUQ==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@lwc/jest-transformer/-/jest-transformer-11.5.4.tgz", + "integrity": "sha512-L+zK3nxiduESeMurXLlO5LeXcnpzp6qXsXk9gaz9Tdvt9x07Hp728XNeg0SutSdNmRK+8vKCZHupFQTgEEOPIg==", "dev": true, "requires": { - "@babel/core": "^7.18.13", + "@babel/core": "^7.20.5", "@babel/plugin-proposal-dynamic-import": "^7.18.6", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-decorators": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-syntax-decorators": "^7.19.0", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", "@babel/preset-typescript": "^7.18.6", - "babel-preset-jest": "^29.0.0" + "babel-preset-jest": "^29.2.0" } }, "@lwc/module-resolver": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/module-resolver/-/module-resolver-2.20.6.tgz", - "integrity": "sha512-ZkhIkteAwgETItq3CCiZN4xuDwbB6RaQGWWD2n8108Ms+Epi5+Ma5sptTFZ2eD8WtIFobaFNTPzV8+TjliZy0g==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/module-resolver/-/module-resolver-2.31.0.tgz", + "integrity": "sha512-SmjGeTuii85RaUERLsS56DrY4MFWUcLVjmInjRU46TmAXMnPfCsk8fxQ5J1iE0Cf7+1/2sjlO0U9VxBQpSNqkA==", "dev": true, "requires": { "resolve": "~1.22.1" } }, "@lwc/shared": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.23.2.tgz", - "integrity": "sha512-LgPs0RTaNRs382/+G1UpDDfh4F4NDiXhIFvUOJhtastciBJndXKdEN27aFdAVxrs+yCt9fCM5wgKVhyZSiGBrQ==", - "dev": true, - "peer": true + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.31.0.tgz", + "integrity": "sha512-tf+/I5ErSrQAVPK8BZAfmOaX0Xp54MbrADCTqeGaKOM/CkVf5mECipZ4DaBIJaFw+YgSpEABeM1FuWAeodeoLg==", + "dev": true }, "@lwc/style-compiler": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.23.2.tgz", - "integrity": "sha512-cNKn18CRzv1IXDQ+tboUGB/VU8ubmnZ3kpGDyPk1VBUWaUdU9HhSXsl+4z/l8UdvNEEYnR3XqQYVsEnpMFO20w==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.31.0.tgz", + "integrity": "sha512-MKsKhfmSU45Xxq5ImJTGCJdqIQi8jx5PuU/xmwZffqCjscQgG4gDXxG2YAh8fGMbZSyrIjN/WTQlr7OvUzZrBA==", "dev": true, - "peer": true, "requires": { - "@lwc/shared": "2.23.2", - "postcss": "~8.4.16", + "@lwc/shared": "2.31.0", + "postcss": "~8.4.18", "postcss-selector-parser": "~6.0.9", "postcss-value-parser": "~4.2.0", - "string.prototype.matchall": "^4.0.7" + "string.prototype.matchall": "^4.0.8" } }, "@lwc/synthetic-shadow": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.23.2.tgz", - "integrity": "sha512-AJk5PFvNtNWHaVVQ4ePlr8+301SmekSF5fd+MifvT3p8sgNCmE7ZlCIsUkgD2qLu/xXLum4451BWBMPgC75r1Q==", - "dev": true, - "peer": true + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.31.0.tgz", + "integrity": "sha512-K9A8DcmSkZIF7l2sGs53h/oTl/Vdoa6XCYIudHwxVormxUhvHhd9TPbEyJBBKJ8augFZAoVs1q5yS4Nr+R9CBg==", + "dev": true }, "@lwc/template-compiler": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.23.2.tgz", - "integrity": "sha512-on6kRYprRfgKxXUDZNBjvLqp5WFQAOV6HTBx6PqW5j0s18Bz0qlF5w2VAv/2ZSfUtzK9544OC3wku4LZP43B2g==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.31.0.tgz", + "integrity": "sha512-4RsASVNmOJ7cNEQOjxYaUWB3cFNAm0KtDWpD54XbhVZ7SBCUBKZ2BZvcRsP6mp7O4a8QOFQiCeCtoDAT/TQ4aA==", "dev": true, - "peer": true, "requires": { - "@lwc/errors": "2.23.2", - "@lwc/shared": "2.23.2", - "acorn": "~8.8.0", + "@lwc/errors": "2.31.0", + "@lwc/shared": "2.31.0", + "acorn": "~8.8.1", "astring": "~1.8.3", "estree-walker": "~2.0.2", "he": "~1.2.0", @@ -12468,9 +11541,9 @@ } }, "@lwc/wire-service": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/wire-service/-/wire-service-2.20.6.tgz", - "integrity": "sha512-HDT04MpGeZwl5ZBC4p+21XVjNdsekysThhgn+BYlS2hrabenvcLE+C5JZJSDay44JqoH91TenqVX83OuiYbGSw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@lwc/wire-service/-/wire-service-2.31.0.tgz", + "integrity": "sha512-go6mhdqLpsu/svRm7Oe+ewi1qvrOlaVjngVU6O2V/UXdKpw22csQEdRCs25jC/kCRNtYdARPLIHlItuK+qL0NQ==", "dev": true }, "@medv/blessed": { @@ -12521,52 +11594,21 @@ "dev": true, "requires": { "@xml-tools/parser": "^1.0.11", - "prettier": ">=2.4.0" - } - }, - "@salesforce/eslint-config-lwc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@salesforce/eslint-config-lwc/-/eslint-config-lwc-3.3.4.tgz", - "integrity": "sha512-Z+UymAmX80Szs4+PaMTJ/XHX9Rgp5sNv0AggCBJFPT94pAWm3UvjLpya+iE1pDblEOrgu97Js059Y/wMONqBzg==", - "dev": true, - "requires": { - "@babel/core": "~7.20.5", - "@babel/eslint-parser": "~7.19.1", - "eslint-restricted-globals": "~0.2.0", - "semver": "^7.3.8" - }, - "dependencies": { - "@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, + "prettier": ">=2.4.0" + } + }, + "@salesforce/eslint-config-lwc": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@salesforce/eslint-config-lwc/-/eslint-config-lwc-3.4.0.tgz", + "integrity": "sha512-RV1of9PVpVHiz4RPc6YugGyw6cyzmddDUZzv3YwIhXqdhra+Enb+DJerVCexSXKGkcZ1vF9uTuQOAOE6tA5J1A==", + "dev": true, + "requires": { + "@babel/core": "~7.21.0", + "@babel/eslint-parser": "~7.19.1", + "eslint-restricted-globals": "~0.2.0", + "semver": "^7.3.8" + }, + "dependencies": { "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -12586,335 +11628,27 @@ "requires": {} }, "@salesforce/sfdx-lwc-jest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/sfdx-lwc-jest/-/sfdx-lwc-jest-1.2.1.tgz", - "integrity": "sha512-KBntqX81/ICOvA7X+KHos7dp9JGsCBwvNTlTfxaQNt9sYJSwCwjtmKKOrlokRofDIj9uFCCIOP5a0ZYi6Dastg==", - "dev": true, - "requires": { - "@lwc/compiler": "2.20.6", - "@lwc/engine-dom": "2.20.6", - "@lwc/jest-preset": "^11.4.0", - "@lwc/jest-resolver": "^11.4.0", - "@lwc/jest-serializer": "^11.4.0", - "@lwc/jest-transformer": "^11.4.0", - "@lwc/module-resolver": "2.20.6", - "@lwc/synthetic-shadow": "2.20.6", - "@lwc/wire-service": "2.20.6", - "@salesforce/wire-service-jest-util": "4.0.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@salesforce/sfdx-lwc-jest/-/sfdx-lwc-jest-1.3.0.tgz", + "integrity": "sha512-DT6AjFLldoWqeI1MdcStVhLj3p+XndUrHdPVwUo+CdiBmnTqNSPBDY/snDZJwZZK61M88mKz2xDzNj7xug3i8g==", + "dev": true, + "requires": { + "@lwc/compiler": "2.31.0", + "@lwc/engine-dom": "2.31.0", + "@lwc/jest-preset": "11.5.4", + "@lwc/jest-resolver": "11.5.4", + "@lwc/jest-serializer": "11.5.4", + "@lwc/jest-transformer": "11.5.4", + "@lwc/module-resolver": "2.31.0", + "@lwc/synthetic-shadow": "2.31.0", + "@lwc/wire-service": "2.31.0", + "@salesforce/wire-service-jest-util": "4.0.1", "chalk": "^4.1.2", - "fast-glob": "^3.2.10", - "jest": "^28.1.3", - "jest-environment-jsdom": "^28.1.3", - "yargs": "~17.5.1" + "fast-glob": "^3.2.12", + "jest": "27.4.7", + "yargs": "~17.6.2" }, "dependencies": { - "@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", - "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - } - }, - "@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", - "dev": true, - "requires": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - } - }, - "@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, - "requires": { - "jest-get-type": "^28.0.2" - } - }, - "@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - } - }, - "@jest/globals": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" - } - }, - "@jest/reporters": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", - "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.24.1" - } - }, - "@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", - "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", - "dev": true, - "requires": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - } - }, - "@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "requires": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@lwc/babel-plugin-component": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/babel-plugin-component/-/babel-plugin-component-2.20.6.tgz", - "integrity": "sha512-iOzQFfe8gsmUAZoQSLG8k+vZl8bIfipaQXHWmM/sKLOUgxwW6eo4eD9sjRFBb0R/cPtu0t7zdpcXndPcTbPL1A==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "~7.18.6", - "@lwc/errors": "2.20.6", - "@lwc/shared": "2.20.6", - "line-column": "~1.0.2" - } - }, - "@lwc/compiler": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/compiler/-/compiler-2.20.6.tgz", - "integrity": "sha512-xZwi2x0CWvuINNIh1CmP4jtigjLvrRTyK+VQmQOdrmj3fSuT7E847R1zgpY9ZVkk+uuxQioTJfxw2fMxp8CkeQ==", - "dev": true, - "requires": { - "@babel/core": "~7.18.9", - "@babel/plugin-proposal-class-properties": "~7.18.6", - "@babel/plugin-proposal-object-rest-spread": "~7.18.9", - "@lwc/babel-plugin-component": "2.20.6", - "@lwc/errors": "2.20.6", - "@lwc/shared": "2.20.6", - "@lwc/style-compiler": "2.20.6", - "@lwc/template-compiler": "2.20.6" - } - }, - "@lwc/engine-dom": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/engine-dom/-/engine-dom-2.20.6.tgz", - "integrity": "sha512-zx0PdQ0qyJJ+86wSorJrg4cU24Vb9fl5+mhggKHD7hOdey+DiEK5Wp5WcEqaUDWS9I0i3OfX1tw5TphxntOZyw==", - "dev": true - }, - "@lwc/errors": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/errors/-/errors-2.20.6.tgz", - "integrity": "sha512-GckFh4a+WVzSW7KHURqWBfmfgBGoDlEcjH4KWxGjGrjumgwNBH8h+9AAoOang5lFdWy1rTApIrIr3hl30SKu/Q==", - "dev": true - }, - "@lwc/shared": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/shared/-/shared-2.20.6.tgz", - "integrity": "sha512-2ZCcUBOUAdOW6dhhixZztAp+Du66YeHVywpU2SBFBQQHt1GSGjAWCv5YvZKcR/Hvon3BwdgBfnds9EArcDyVBw==", - "dev": true - }, - "@lwc/style-compiler": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/style-compiler/-/style-compiler-2.20.6.tgz", - "integrity": "sha512-Z7ji3SB8JHTSoirbM2JXw9TSK7XfpkG+czD32bWJ6tJrr675rK9b7kIRNVfWSUxD+9cROTbBkQroCeeBH2FWMQ==", - "dev": true, - "requires": { - "@lwc/shared": "2.20.6", - "postcss": "~8.4.14", - "postcss-selector-parser": "~6.0.9", - "postcss-value-parser": "~4.2.0", - "string.prototype.matchall": "^4.0.7" - } - }, - "@lwc/synthetic-shadow": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/synthetic-shadow/-/synthetic-shadow-2.20.6.tgz", - "integrity": "sha512-3c5uq+a9ISJFNbM/1E3UTSlaXspjuqrwDL/PmzD7ad3yoK/ij3L4G1lrtKs2o0lATFHgN900zAscFTEpzeT1Iw==", - "dev": true - }, - "@lwc/template-compiler": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/@lwc/template-compiler/-/template-compiler-2.20.6.tgz", - "integrity": "sha512-r61f8pFDSHFx0EoUW58zvzOCZUfP1mjlcoevfURwcE2x7hH/8EjBWQBHhENao56iv4rfQL65MWDcbhc16rg7pA==", - "dev": true, - "requires": { - "@lwc/errors": "2.20.6", - "@lwc/shared": "2.20.6", - "acorn": "~8.7.1", - "astring": "~1.8.3", - "estree-walker": "~2.0.2", - "he": "~1.2.0", - "parse5": "~6.0.1" - } - }, - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12924,541 +11658,37 @@ "color-convert": "^2.0.1" } }, - "babel-plugin-jest-hoist": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", - "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, "chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true - }, - "expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", - "dev": true, - "requires": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", - "dev": true, - "requires": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" - } - }, - "jest-changed-files": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", - "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - } - }, - "jest-circus": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", - "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-cli": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", - "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", - "dev": true, - "requires": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - } - }, - "jest-config": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", - "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "babel-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", - "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", - "dev": true, - "requires": { - "@jest/transform": "^28.1.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-preset-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", - "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^28.1.3", - "babel-preset-current-node-syntax": "^1.0.0" - } - } - } - }, - "jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - } - }, - "jest-docblock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", - "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", - "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" - } - }, - "jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - } - }, - "jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true - }, - "jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", - "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", - "dev": true, - "requires": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - } - }, - "jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - } - }, - "jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*" - } - }, - "jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true - }, - "jest-resolve": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", - "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", - "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", - "dev": true, - "requires": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" - } - }, - "jest-runner": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", - "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - } - }, - "jest-runtime": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", - "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" - } - }, - "jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", - "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" - } - }, - "jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "requires": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13471,9 +11701,9 @@ } }, "@salesforce/wire-service-jest-util": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@salesforce/wire-service-jest-util/-/wire-service-jest-util-4.0.0.tgz", - "integrity": "sha512-YJO/bMq5l6IYIZG6bAqYzzbmZMPCzB2GE2TKGLA1U7B9HpmNHZS7DdDcy154P03dfLSgF+tgVYeklh2HRYGk9g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@salesforce/wire-service-jest-util/-/wire-service-jest-util-4.0.1.tgz", + "integrity": "sha512-6u3ZGXDCeRnKSX8WHRpVQAXmGiee6NkhmQb0gXmcPAm8zW/Q7o7lRJNvXKnxnXY7qyiKXVYDQAFKJjtGpaCfjw==", "dev": true, "requires": {} }, @@ -13499,43 +11729,43 @@ "dev": true }, "@sinclair/typebox": { - "version": "0.24.34", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz", - "integrity": "sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==", + "version": "0.25.23", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.23.tgz", + "integrity": "sha512-VEB8ygeP42CFLWyAJhN5OklpxUliqdNEUcXb4xZ/CINqtYGTjL5ukluKdKzQ0iWdUxyQ7B0539PAUhHKrCNWSQ==", "dev": true }, "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } }, "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -13561,18 +11791,18 @@ } }, "@types/babel__traverse": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz", - "integrity": "sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", "dev": true, "requires": { "@babel/types": "^7.3.0" } }, "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "requires": { "@types/node": "*" @@ -13602,17 +11832,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/jsdom": { - "version": "16.2.15", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz", - "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/parse5": "^6.0.3", - "@types/tough-cookie": "*" - } - }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -13626,21 +11845,15 @@ "dev": true }, "@types/node": { - "version": "18.7.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", - "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", - "dev": true - }, - "@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "version": "18.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", + "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", "dev": true }, "@types/prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "@types/stack-utils": { @@ -13649,16 +11862,10 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "@types/tough-cookie": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", - "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", - "dev": true - }, "@types/yargs": { - "version": "17.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.12.tgz", - "integrity": "sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -13760,9 +11967,9 @@ "dev": true }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-globals": { @@ -13852,9 +12059,9 @@ } }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -13917,9 +12124,9 @@ "dev": true }, "astring": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", - "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.4.tgz", + "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==", "dev": true }, "asynckit": { @@ -13970,16 +12177,16 @@ } }, "babel-jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.2.tgz", - "integrity": "sha512-yTu4/WSi/HzarjQtrJSwV+/0maoNt+iP0DmpvFJdv9yY+5BuNle8TbheHzzcSWj5gIHfuhpbLYHWRDYhWKyeKQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, - "peer": true, "requires": { - "@jest/transform": "^29.0.2", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.0.2", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -13990,17 +12197,37 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14011,7 +12238,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -14020,37 +12246,25 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, "babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -14065,9 +12279,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.2.tgz", - "integrity": "sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.3.tgz", + "integrity": "sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -14097,12 +12311,12 @@ } }, "babel-preset-jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.0.2.tgz", - "integrity": "sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.3.tgz", + "integrity": "sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^29.0.2", + "babel-plugin-jest-hoist": "^29.4.3", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -14218,9 +12432,9 @@ } }, "ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "cjs-module-lexer": { @@ -14289,13 +12503,13 @@ } }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, @@ -14380,9 +12594,9 @@ "dev": true }, "cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, "cssstyle": { @@ -14403,26 +12617,14 @@ } }, "data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "requires": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - } + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" } }, "debug": { @@ -14453,9 +12655,9 @@ "dev": true }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "dev": true }, "define-properties": { @@ -14481,11 +12683,10 @@ "dev": true }, "diff-sequences": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz", - "integrity": "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==", - "dev": true, - "peer": true + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true }, "dir-glob": { "version": "3.0.1", @@ -14506,12 +12707,20 @@ } }, "domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, "requires": { - "webidl-conversions": "^7.0.0" + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } } }, "eastasianwidth": { @@ -14527,9 +12736,9 @@ "dev": true }, "emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", "dev": true }, "emoji-regex": { @@ -15096,17 +13305,15 @@ "dev": true }, "expect": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.2.tgz", - "integrity": "sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, - "peer": true, "requires": { - "@jest/expect-utils": "^29.0.2", - "jest-get-type": "^29.0.0", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" } }, "fast-deep-equal": { @@ -15116,9 +13323,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -15161,9 +13368,9 @@ } }, "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "requires": { "bser": "2.1.1" @@ -15550,12 +13757,12 @@ "dev": true }, "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, "requires": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^1.0.5" } }, "html-escaper": { @@ -15565,12 +13772,12 @@ "dev": true }, "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "@tootallnate/once": "2", + "@tootallnate/once": "1", "agent-base": "6", "debug": "4" } @@ -15598,12 +13805,12 @@ "dev": true }, "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore": { @@ -15847,6 +14054,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -15884,9 +14097,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -15946,55 +14159,52 @@ } }, "jest": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.2.tgz", - "integrity": "sha512-enziNbNUmXTcTaTP/Uq5rV91r0Yqy2UKzLUIabxMpGm9YHz8qpbJhiRnNVNvm6vzWfzt/0o97NEHH8/3udoClA==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", + "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", "dev": true, - "peer": true, "requires": { - "@jest/core": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/core": "^27.4.7", "import-local": "^3.0.2", - "jest-cli": "^29.0.2" + "jest-cli": "^27.4.7" } }, "jest-changed-files": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.0.0.tgz", - "integrity": "sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, - "peer": true, "requires": { + "@jest/types": "^27.5.1", "execa": "^5.0.0", - "p-limit": "^3.1.0" + "throat": "^6.0.1" } }, "jest-circus": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.2.tgz", - "integrity": "sha512-YTPEsoE1P1X0bcyDQi3QIkpt2Wl9om9k2DQRuLFdS5x8VvAKSdYAVJufgvudhnKgM8WHvvAzhBE+1DRQB8x1CQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, - "peer": true, "requires": { - "@jest/environment": "^29.0.2", - "@jest/expect": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", - "p-limit": "^3.1.0", - "pretty-format": "^29.0.2", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "stack-utils": "^2.0.3", + "throat": "^6.0.1" }, "dependencies": { "ansi-styles": { @@ -16002,7 +14212,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16012,7 +14221,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16023,7 +14231,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16032,22 +14239,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -16055,24 +14284,23 @@ } }, "jest-cli": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.2.tgz", - "integrity": "sha512-tlf8b+4KcUbBGr25cywIi3+rbZ4+G+SiG8SvY552m9sRZbXPafdmQRyeVE/C/R8K+TiBAMrTIUmV2SlStRJ40g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, - "peer": true, "requires": { - "@jest/core": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "prompts": "^2.0.1", - "yargs": "^17.3.1" + "yargs": "^16.2.0" }, "dependencies": { "ansi-styles": { @@ -16080,7 +14308,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16090,18 +14317,27 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16110,55 +14346,74 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } }, "jest-config": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.2.tgz", - "integrity": "sha512-RU4gzeUNZAFktYVzDGimDxeYoaiTnH100jkYYZgldqFamaZukF0IqmFx8+QrzVeEWccYg10EEJT3ox1Dq5b74w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, - "peer": true, "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.0.2", - "@jest/types": "^29.0.2", - "babel-jest": "^29.0.2", + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.3", + "glob": "^7.1.1", "graceful-fs": "^4.2.9", - "jest-circus": "^29.0.2", - "jest-environment-node": "^29.0.2", - "jest-get-type": "^29.0.0", - "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-runner": "^29.0.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.0.2", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -16168,7 +14423,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16178,7 +14432,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16189,7 +14442,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16198,22 +14450,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -16221,16 +14495,15 @@ } }, "jest-diff": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.2.tgz", - "integrity": "sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, - "peer": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^29.0.0", - "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "dependencies": { "ansi-styles": { @@ -16238,7 +14511,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16248,7 +14520,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16259,7 +14530,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16268,22 +14538,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -16300,17 +14592,16 @@ } }, "jest-each": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.2.tgz", - "integrity": "sha512-+sA9YjrJl35iCg0W0VCrgCVj+wGhDrrKQ+YAqJ/DHBC4gcDFAeePtRRhpJnX9gvOZ63G7gt52pwp2PesuSEx0Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "jest-get-type": "^29.0.0", - "jest-util": "^29.0.2", - "pretty-format": "^29.0.2" + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, "dependencies": { "ansi-styles": { @@ -16318,7 +14609,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16328,7 +14618,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16339,7 +14628,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16348,22 +14636,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -16371,70 +14681,86 @@ } }, "jest-environment-jsdom": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz", - "integrity": "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/jsdom": "^16.2.4", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3", - "jsdom": "^19.0.0" - }, - "dependencies": { - "@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - } - }, - "@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - } - }, - "@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.24.1" - } - }, - "@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "requires": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "dependencies": { "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -16475,57 +14801,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*" - } - }, - "jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "requires": { - "@jest/schemas": "^28.1.3", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "react-is": "^17.0.1" }, "dependencies": { "ansi-styles": { @@ -16536,6 +14820,12 @@ } } }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -16547,71 +14837,51 @@ } } }, - "jest-environment-node": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.2.tgz", - "integrity": "sha512-4Fv8GXVCToRlMzDO94gvA8iOzKxQ7rhAbs8L+j8GPyTxGuUiYkV+63LecGeVdVhsL2KXih1sKnoqmH6tp89J7Q==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/node": "*", - "jest-mock": "^29.0.2", - "jest-util": "^29.0.2" - } - }, - "jest-get-type": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz", - "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==", - "dev": true, - "peer": true - }, - "jest-haste-map": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.2.tgz", - "integrity": "sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^29.0.2", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.0.0", - "jest-util": "^29.0.2", - "jest-worker": "^29.0.2", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, "jest-leak-detector": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.2.tgz", - "integrity": "sha512-5f0493qDeAxjUldkBSQg5D1cLadRgZVyWpTQvfJeQwQUpHQInE21AyVHVv64M7P2Ue8Z5EZ4BAcoDS/dSPPgMw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, - "peer": true, "requires": { - "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-matcher-utils": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz", - "integrity": "sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, - "peer": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.0.2", - "jest-get-type": "^29.0.0", - "pretty-format": "^29.0.2" + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "dependencies": { "ansi-styles": { @@ -16619,7 +14889,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16629,7 +14898,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16640,7 +14908,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16649,22 +14916,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -16672,19 +14961,18 @@ } }, "jest-message-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.2.tgz", - "integrity": "sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, - "peer": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.0.2", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.0.2", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -16694,7 +14982,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16704,7 +14991,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16715,7 +15001,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16724,22 +15009,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -16747,43 +15054,41 @@ } }, "jest-mock": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.2.tgz", - "integrity": "sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^27.5.1", "@types/node": "*" } }, "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "requires": {} }, "jest-regex-util": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.0.0.tgz", - "integrity": "sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==", - "dev": true, - "peer": true + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true }, "jest-resolve": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.2.tgz", - "integrity": "sha512-V3uLjSA+EHxLtjIDKTBXnY71hyx+8lusCqPXvqzkFO1uCGvVpjBfuOyp+KOLBNSuY61kM2jhepiMwt4eiJS+Vw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, - "peer": true, "requires": { + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", + "jest-haste-map": "^27.5.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.0.2", - "jest-validate": "^29.0.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -16794,7 +15099,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16804,7 +15108,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16815,7 +15118,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16824,22 +15126,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -16847,44 +15146,43 @@ } }, "jest-resolve-dependencies": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.2.tgz", - "integrity": "sha512-fSAu6eIG7wtGdnPJUkVVdILGzYAP9Dj/4+zvC8BrGe8msaUMJ9JeygU0Hf9+Uor6/icbuuzQn5See1uajLnAqg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, - "peer": true, "requires": { - "jest-regex-util": "^29.0.0", - "jest-snapshot": "^29.0.2" + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" } }, "jest-runner": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.2.tgz", - "integrity": "sha512-+D82iPZejI8t+SfduOO1deahC/QgLFf8aJBO++Znz3l2ETtOMdM7K4ATsGWzCFnTGio5yHaRifg1Su5Ybza5Nw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, - "peer": true, "requires": { - "@jest/console": "^29.0.2", - "@jest/environment": "^29.0.2", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.10.2", + "emittery": "^0.8.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.0.0", - "jest-environment-node": "^29.0.2", - "jest-haste-map": "^29.0.2", - "jest-leak-detector": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-resolve": "^29.0.2", - "jest-runtime": "^29.0.2", - "jest-util": "^29.0.2", - "jest-watcher": "^29.0.2", - "jest-worker": "^29.0.2", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" }, "dependencies": { "ansi-styles": { @@ -16892,7 +15190,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16902,7 +15199,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16913,7 +15209,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -16922,22 +15217,28 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, - "peer": true + "requires": { + "detect-newline": "^3.0.0" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -16945,32 +15246,31 @@ } }, "jest-runtime": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.2.tgz", - "integrity": "sha512-DO6F81LX4okOgjJLkLySv10E5YcV5NHUbY1ZqAUtofxdQE+q4hjH0P2gNsY8x3z3sqgw7O/+919SU4r18Fcuig==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^29.0.2", - "@jest/fake-timers": "^29.0.2", - "@jest/globals": "^29.0.2", - "@jest/source-map": "^29.0.0", - "@jest/test-result": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/node": "*", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-mock": "^29.0.2", - "jest-regex-util": "^29.0.0", - "jest-resolve": "^29.0.2", - "jest-snapshot": "^29.0.2", - "jest-util": "^29.0.2", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -16980,7 +15280,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -16990,7 +15289,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -17001,7 +15299,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -17010,59 +15307,63 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, + "jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + } + }, "jest-snapshot": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.2.tgz", - "integrity": "sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, - "peer": true, "requires": { - "@babel/core": "^7.11.6", + "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.0.2", - "@jest/transform": "^29.0.2", - "@jest/types": "^29.0.2", - "@types/babel__traverse": "^7.0.6", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.0.2", + "expect": "^27.5.1", "graceful-fs": "^4.2.9", - "jest-diff": "^29.0.2", - "jest-get-type": "^29.0.0", - "jest-haste-map": "^29.0.2", - "jest-matcher-utils": "^29.0.2", - "jest-message-util": "^29.0.2", - "jest-util": "^29.0.2", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^29.0.2", - "semver": "^7.3.5" + "pretty-format": "^27.5.1", + "semver": "^7.3.2" }, "dependencies": { "ansi-styles": { @@ -17070,7 +15371,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -17080,7 +15380,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -17091,7 +15390,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -17100,22 +15398,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, - "peer": true, "requires": { "lru-cache": "^6.0.0" } @@ -17125,7 +15445,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -17133,13 +15452,12 @@ } }, "jest-util": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.2.tgz", - "integrity": "sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -17152,7 +15470,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -17162,7 +15479,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -17173,7 +15489,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -17182,22 +15497,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -17205,18 +15517,17 @@ } }, "jest-validate": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.2.tgz", - "integrity": "sha512-AeRKm7cEucSy7tr54r3LhiGIXYvOILUwBM1S7jQkKs6YelwAlWKsmZGVrQR7uwsd31rBTnR5NQkODi1Z+6TKIQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^29.0.2", + "@jest/types": "^27.5.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.0.0", + "jest-get-type": "^27.5.1", "leven": "^3.1.0", - "pretty-format": "^29.0.2" + "pretty-format": "^27.5.1" }, "dependencies": { "ansi-styles": { @@ -17224,7 +15535,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -17233,15 +15543,13 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "peer": true + "dev": true }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -17252,7 +15560,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -17261,22 +15568,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "peer": true + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -17284,19 +15613,17 @@ } }, "jest-watcher": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.2.tgz", - "integrity": "sha512-ds2bV0oyUdYoyrUTv4Ga5uptz4cEvmmP/JzqDyzZZanvrIn8ipxg5l3SDOAIiyuAx1VdHd2FBzeXPFO5KPH8vQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, - "peer": true, "requires": { - "@jest/test-result": "^29.0.2", - "@jest/types": "^29.0.2", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^29.0.2", + "jest-util": "^27.5.1", "string-length": "^4.0.1" }, "dependencies": { @@ -17305,7 +15632,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -17315,7 +15641,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -17326,7 +15651,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -17335,22 +15659,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -17358,11 +15679,10 @@ } }, "jest-worker": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.2.tgz", - "integrity": "sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -17373,15 +15693,13 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -17423,23 +15741,23 @@ } }, "jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, "requires": { "abab": "^2.0.5", - "acorn": "^8.5.0", + "acorn": "^8.2.4", "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", + "cssom": "^0.4.4", "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", "https-proxy-agent": "^5.0.0", "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.0", @@ -17448,13 +15766,26 @@ "symbol-tree": "^3.2.4", "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } } }, "jsesc": { @@ -17864,9 +16195,9 @@ "dev": true }, "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -18204,9 +16535,9 @@ } }, "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -18215,9 +16546,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -18255,12 +16586,12 @@ } }, "pretty-format": { - "version": "29.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.2.tgz", - "integrity": "sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", + "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", "dev": true, "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -18389,9 +16720,9 @@ "dev": true }, "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true }, "restore-cursor": { @@ -18556,9 +16887,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -18572,9 +16903,9 @@ "dev": true }, "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -18624,18 +16955,18 @@ } }, "string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", + "regexp.prototype.flags": "^1.4.3", "side-channel": "^1.0.4" } }, @@ -18698,9 +17029,9 @@ } }, "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -18784,6 +17115,12 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -18824,9 +17161,9 @@ } }, "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "requires": { "punycode": "^2.1.1" @@ -18916,6 +17253,15 @@ "is-typed-array": "^1.1.9" } }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript": { "version": "4.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", @@ -18984,14 +17330,22 @@ "dev": true }, "v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } } }, "w3c-hr-time": { @@ -19004,12 +17358,12 @@ } }, "w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, "requires": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^3.0.0" } }, "wait-on": { @@ -19046,34 +17400,35 @@ } }, "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true }, "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, "requires": { - "iconv-lite": "0.6.3" + "iconv-lite": "0.4.24" } }, "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true }, "whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" } }, "which": { @@ -19168,26 +17523,28 @@ "dev": true }, "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "requires": {} }, "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, "xmlchars": { @@ -19215,18 +17572,18 @@ "dev": true }, "yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { diff --git a/package.json b/package.json index 1669b652..940571ba 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,8 @@ "test:unit:watch": "sfdx-lwc-jest --watch", "test:unit:debug": "sfdx-lwc-jest --debug", "test:unit:coverage": "sfdx-lwc-jest --coverage", - "apex:local:start": "node node_modules/prettier-plugin-apex/bin/start-apex-server.js", - "apex:local:stop": "node node_modules/prettier-plugin-apex/bin/stop-apex-server.js", + "apex:local:start": "node node_modules/prettier-plugin-apex/dist/bin/start-apex-server.js", + "apex:local:stop": "node node_modules/prettier-plugin-apex/dist/bin/stop-apex-server.js", "apex:test:local": "rm -rf testresults && sfdx force:apex:test:run -l RunLocalTests -d testresults -r human -c", "pmd:scan:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/ruleset.xml -f csv -r pmd/pmd.csv --cache .pmdCache --short-names", "pmd:scan:deploy:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/deployRules.xml -f csv -r pmd/deploy.csv --cache .pmdCache --short-names", @@ -41,14 +41,14 @@ "labsdevhub": "sfdx config:set defaultdevhubusername=LabsLDO", "version": "auto-changelog && git add CHANGELOG.md", "updateHighlight": ". scripts/updateHighlight.sh", - "ApexDoxSetup": ". doc-assets/ApexDoxSetup.sh" + "apexdoxSetup": ". doc-assets/ApexDoxSetup.sh" }, "devDependencies": { - "@lwc/eslint-plugin-lwc": "^1.5.1", + "@lwc/eslint-plugin-lwc": "^1.6.2", "@prettier/plugin-xml": "^2.2.0", - "@salesforce/eslint-config-lwc": "^3.3.4", + "@salesforce/eslint-config-lwc": "^3.4.0", "@salesforce/eslint-plugin-lightning": "^1.0.0", - "@salesforce/sfdx-lwc-jest": "^1.2.1", + "@salesforce/sfdx-lwc-jest": "^1.3.0", "auto-changelog": "^2.4.0", "eslint": "^8.34.0", "eslint-plugin-import": "^2.27.5", From 0ef9783b4c94c86ba07429ca36aa1abb650d9c19 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 22 Feb 2023 11:08:40 -0800 Subject: [PATCH 15/70] build(pmd): remove updatepmd --- .husky/pre-commit | 6 ------ pmd/pmd-version.txt | 0 pmd/updatepmd.sh | 7 ------- 3 files changed, 13 deletions(-) delete mode 100644 pmd/pmd-version.txt delete mode 100644 pmd/updatepmd.sh diff --git a/.husky/pre-commit b/.husky/pre-commit index 04c90e54..6e9bf51f 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,10 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -. pmd/updatepmd.sh - -npm run prettier:docs -cd docs -git add . - npm run precommit diff --git a/pmd/pmd-version.txt b/pmd/pmd-version.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/pmd/updatepmd.sh b/pmd/updatepmd.sh deleted file mode 100644 index 3f4d9c5a..00000000 --- a/pmd/updatepmd.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -VERSION=$(curl -s https://api.github.com/repos/pmd/pmd/releases/latest | grep '.tag_name' | sed 's:.*/::' | sed 's:",::') -echo $VERSION - -printf '%s' "$VERSION" > pmd/pmd-version.txt -git add pmd/pmd-version.txt \ No newline at end of file From 994b3f241cd5e5ab81955571bc6ad9ab839d4c38 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 22 Feb 2023 13:54:04 -0800 Subject: [PATCH 16/70] build(sfdx): change sfdx to sf commands --- .github/workflows/packaging.yml | 91 ----------- INSTALLATION.md | 36 +++-- package-lock.json | 184 ---------------------- package.json | 8 +- scripts/packagedev/blankorg.sh | 6 +- scripts/packagedev/build.sh | 2 +- scripts/packagedev/installlatest.sh | 18 +-- scripts/packagedev/namespacedev.sh | 12 +- scripts/packagedev/packagedev.sh | 14 +- scripts/packagedev/professionalEdition.sh | 13 +- scripts/scratchorg.sh | 12 +- scripts/unmanaged.sh | 10 +- 12 files changed, 68 insertions(+), 338 deletions(-) delete mode 100644 .github/workflows/packaging.yml diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml deleted file mode 100644 index cebfc1b4..00000000 --- a/.github/workflows/packaging.yml +++ /dev/null @@ -1,91 +0,0 @@ -# Unique name for this workflow -name: Packaging - -# Definition when the workflow should run -on: - release: - types: [released] - -# Jobs to be executed -jobs: - packaging: - runs-on: ubuntu-latest - steps: - # Install Salesforce CLI - - name: Install Salesforce CLI - run: | - wget https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz - mkdir sfdx-cli - tar xJf sfdx-linux-amd64.tar.xz -C sfdx-cli --strip-components 1 - ./sfdx-cli/install - # Checkout the code in the pull request - - name: 'Checkout source code' - uses: actions/checkout@v3 - with: - #token: ${{ secrets.PAT }} - ref: 'main' - - # Store secret for dev hub - - name: 'Populate auth file with DEVHUB_SFDX_URL secret' - shell: bash - run: 'echo ${{ secrets.DEVHUB_SFDX_URL}} > ./DEVHUB_SFDX_URL.txt' - - # Authenticate dev hub - - name: 'Authenticate Dev Hub' - run: 'sfdx force:auth:sfdxurl:store -f ./DEVHUB_SFDX_URL.txt -a devhub -d' - - # Remove auth file - - name: Remove auth file - run: rm -f ./DEVHUB_SFDX_URL.txt - - # Add namespace to project config - - name: Add namespace to project config - run: | - sed -i 's,"namespace": "","namespace": "LabsActionPlans",' sfdx-project.json - - # Update release number in sfdx-project.json - - name: Update Package number in sfdx-project.json - run: | - versionNumber="${{ github.event.release.tag_name }}" - versionName="${{ github.event.release.name }}" - versionNameRegex="\"versionName\": \".*\"" - versionNumberRegex="\"versionNumber\": \"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.NEXT\"" - newVersionName="\"versionName\": \"${versionName}\"" - newVersionNumber="\"versionNumber\": \"${versionNumber/v/}.NEXT\"" - sed -i -E "s,${versionNameRegex},${newVersionName}," sfdx-project.json - sed -i -E "s,${versionNumberRegex},${newVersionNumber}," sfdx-project.json - - # Create package version and extract its id - - name: Create package version - id: create-package-version - run: | - set +e - json=$(sfdx force:package:version:create -c -p ActionPlans --path sfdx-source/LabsActionPlans --installationkeybypass -w 20 --json) - echo $json - status=$(echo $json | jq '.status') - if [ $status == "0" ]; then - packageVersionId=$(echo $json | jq '.result.SubscriberPackageVersionId') - echo "::set-output name=packageVersionId::$packageVersionId" - else - echo "sfdx force:package:version:create failed" - fi - exit $status - - # Update sfdx-project.json and README to use only latest package version - #- name: 'Update sfdx-project.json and README' - # id: packaging-updater - # uses: trailheadapps/github-action-sfdx-packaging-updater@main - - # Remove namespace from project config - - name: Remove namespace from project config - run: | - sed -i 's,"namespace": "LabsActionPlans","namespace": "",' sfdx-project.json - - # Update sfdx-project.json - - name: 'Commit changes' - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: 'Created new package version' - tagging_message: '${{ github.event.release.tag_name }}' - file_pattern: sfdx-project.json README.md - push_options: '--force' diff --git a/INSTALLATION.md b/INSTALLATION.md index c23b25b6..b37d7534 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -82,23 +82,27 @@ Start from a brand-new environment to avoid conflicts with previous work you may 1. Run this command to deploy the app. - ``` - sfdx force:source:deploy -p sfdx-source/LabsActionPlans --tracksource - ``` + ``` + sf deploy metadata --source-dir sfdx-source/LabsActionPlans + ``` 2. Assign the `Action_Plans_Admin` permission set to the admin user. - ``` - sfdx force:user:permset:assign -n Action_Plans_Admin - ``` + ``` + sf org assign permset --name Action_Plans_Admin + ``` 3. (Optional) [Load sample metadata](#optional-installation-instructions) (see below) + ``` + sf deploy metadata --source-dir sfdx-source/unmanaged + ``` + 4. If your org isn't already open, open it now: - ``` - sfdx force:org:open -u myorg - ``` + ``` + sf org open --target-org myorg + ``` 2. In App Launcher, select the **Action Plans** app. @@ -106,7 +110,7 @@ Start from a brand-new environment to avoid conflicts with previous work you may This repository contains several files that are relevant if you want to add sample data, or integrate modern web development tooling to your Salesforce development processes or to your continuous integration/continuous deployment processes. -### Data Import (Optional - NOT available if using the AppExchange managed package) +### Data/Metadata Import (Optional - NOT available if using the AppExchange managed package) - This repository creates sample data (Accounts, Contacts, Leads) if you choose to create a scratch org. To prevent this, go to the [scratch org definition](./config/project-scratch-def.json) and change `hasSampleData` to `false`. ``` @@ -123,16 +127,16 @@ This repository contains several files that are relevant if you want to add samp - a sample Task layout - a sample report on open Action Plan-related Tasks ``` - sfdx force:source:deploy -p sfdx-source/unmanaged --tracksource + sf deploy metadata --source-dir sfdx-source/unmanaged ``` - You can also create other sample Account and Contact records by running the following command: ``` - sfdx force:data:tree:import -p ./data/action-plan-data-plan.json + sf data import tree --plan ./data/action-plan-data-plan.json ``` -### Data Import (Optional - ONLY if using the AppExchange managed package) +### Data/Metadata Import (Optional - ONLY if using the AppExchange managed package) - When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following: ``` @@ -144,18 +148,20 @@ This repository contains several files that are relevant if you want to add samp - a sample Task layout - a sample report on open Action Plan-related Tasks ``` - sfdx force:source:deploy -p sfdx-source/unmanagedExtension --tracksource + sf deploy metadata --source-dir sfdx-source/unmanagedExtension ``` - You can also create other sample Account and Contact records by running the following command: ``` - sfdx force:data:tree:import -p ./data/action-plan-data-plan.json + sf data import tree --plan ./data/action-plan-data-plan.json ``` ### Code formatting [Prettier](https://prettier.io/) is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install [this extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) from the Visual Studio Code Marketplace. The [.prettierignore](/.prettierignore) and [.prettierrc](/.prettierrc) files are provided as part of this repository to control the behavior of the Prettier formatter. +[Prettier Apex](https://github.com/dangmai/prettier-plugin-apex) is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow [these instructions](https://developer.salesforce.com/tools/vscode/en/user-guide/prettier) from the Salesforce Extensions site. + ### Code linting [ESLint](https://eslint.org/) is a popular JavaScript linting tool used to identify stylistic errors and erroneous constructs. To use ESLint with Visual Studio Code, install [this extension](https://marketplace.visualstudio.com/items?itemName=salesforce.salesforcedx-vscode) from the Visual Studio Code Marketplace. The [.eslintignore](/.eslintignore) file is provided as part of this repository to exclude specific files from the linting process in the context of Lightning Web Components development. diff --git a/package-lock.json b/package-lock.json index 512232d5..3dbfa18e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,6 @@ "eslint": "^8.34.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", - "fx": "^20.0.2", "husky": "^8.0.3", "lint-staged": "^13.1.2", "marked": "^4.2.12", @@ -1932,18 +1931,6 @@ "integrity": "sha512-go6mhdqLpsu/svRm7Oe+ewi1qvrOlaVjngVU6O2V/UXdKpw22csQEdRCs25jC/kCRNtYdARPLIHlItuK+qL0NQ==", "dev": true }, - "node_modules/@medv/blessed": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@medv/blessed/-/blessed-2.0.1.tgz", - "integrity": "sha512-/NdX1Ql8hKNM0vHFJnEr/bcw6BG0ULHD3HhInpniZw5ixpl+n/QIRfMEEmLCn7acedbM1zGdZvU5ZMbn9kcF5Q==", - "dev": true, - "bin": { - "blessed": "bin/tput.js" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -4494,95 +4481,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fx": { - "version": "20.0.2", - "resolved": "https://registry.npmjs.org/fx/-/fx-20.0.2.tgz", - "integrity": "sha512-BgZNylpsDf5V0c4DwjWnre2dld9YbEbdNUnXzOC2WJv4R/AnJG8cu7mBERhkqxue3S3hgmJr3lqoqeKb2PedGQ==", - "dev": true, - "dependencies": { - "@medv/blessed": "^2.0.1", - "chalk": "^4.1.0", - "indent-string": "^4.0.0", - "lossless-json": "^1.0.4", - "string-width": "^4.2.0" - }, - "bin": { - "fx": "index.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fx/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/fx/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/fx/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/fx/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/fx/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/fx/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -8078,12 +7976,6 @@ "node": ">=8" } }, - "node_modules/lossless-json": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-1.0.5.tgz", - "integrity": "sha512-RicKUuLwZVNZ6ZdJHgIZnSeA05p8qWc5NW0uR96mpPIjN9WDLUg9+kj1esQU1GkPn9iLZVKatSQK5gyiaFHgJA==", - "dev": true - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -11546,12 +11438,6 @@ "integrity": "sha512-go6mhdqLpsu/svRm7Oe+ewi1qvrOlaVjngVU6O2V/UXdKpw22csQEdRCs25jC/kCRNtYdARPLIHlItuK+qL0NQ==", "dev": true }, - "@medv/blessed": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@medv/blessed/-/blessed-2.0.1.tgz", - "integrity": "sha512-/NdX1Ql8hKNM0vHFJnEr/bcw6BG0ULHD3HhInpniZw5ixpl+n/QIRfMEEmLCn7acedbM1zGdZvU5ZMbn9kcF5Q==", - "dev": true - }, "@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -13483,70 +13369,6 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, - "fx": { - "version": "20.0.2", - "resolved": "https://registry.npmjs.org/fx/-/fx-20.0.2.tgz", - "integrity": "sha512-BgZNylpsDf5V0c4DwjWnre2dld9YbEbdNUnXzOC2WJv4R/AnJG8cu7mBERhkqxue3S3hgmJr3lqoqeKb2PedGQ==", - "dev": true, - "requires": { - "@medv/blessed": "^2.0.1", - "chalk": "^4.1.0", - "indent-string": "^4.0.0", - "lossless-json": "^1.0.4", - "string-width": "^4.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -16112,12 +15934,6 @@ } } }, - "lossless-json": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-1.0.5.tgz", - "integrity": "sha512-RicKUuLwZVNZ6ZdJHgIZnSeA05p8qWc5NW0uR96mpPIjN9WDLUg9+kj1esQU1GkPn9iLZVKatSQK5gyiaFHgJA==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", diff --git a/package.json b/package.json index 940571ba..c44fee2c 100644 --- a/package.json +++ b/package.json @@ -13,14 +13,14 @@ "lint:aura": "eslint **/aura/**", "lint:lwc": "eslint **/lwc/**", "test": "npm run test:unit", - "test:apex": "rm testresults/* && sfdx force:apex:test:run --testlevel RunLocalTests -d testresults --resultformat human --codecoverage", + "test:apex": "npm run apex:test:local", "test:unit": "sfdx-lwc-jest", "test:unit:watch": "sfdx-lwc-jest --watch", "test:unit:debug": "sfdx-lwc-jest --debug", "test:unit:coverage": "sfdx-lwc-jest --coverage", "apex:local:start": "node node_modules/prettier-plugin-apex/dist/bin/start-apex-server.js", "apex:local:stop": "node node_modules/prettier-plugin-apex/dist/bin/stop-apex-server.js", - "apex:test:local": "rm -rf testresults && sfdx force:apex:test:run -l RunLocalTests -d testresults -r human -c", + "apex:test:local": "rm -rf testresults && sfdx force:apex:test:run --codecoverage --resultformat human -l RunLocalTests --wait 20 --outputdir testresults", "pmd:scan:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/ruleset.xml -f csv -r pmd/pmd.csv --cache .pmdCache --short-names", "pmd:scan:deploy:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/deployRules.xml -f csv -r pmd/deploy.csv --cache .pmdCache --short-names", "prettier:apex:local": "prettier --apex-standalone-parser built-in --write \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\"", @@ -38,9 +38,8 @@ "packagedev": ". scripts/packagedev/packagedev.sh", "prepare": "husky install", "precommit": "lint-staged", - "labsdevhub": "sfdx config:set defaultdevhubusername=LabsLDO", + "labsdevhub": "sf config set target-dev-hub=LabsLDO", "version": "auto-changelog && git add CHANGELOG.md", - "updateHighlight": ". scripts/updateHighlight.sh", "apexdoxSetup": ". doc-assets/ApexDoxSetup.sh" }, "devDependencies": { @@ -53,7 +52,6 @@ "eslint": "^8.34.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", - "fx": "^20.0.2", "husky": "^8.0.3", "lint-staged": "^13.1.2", "marked": "^4.2.12", diff --git a/scripts/packagedev/blankorg.sh b/scripts/packagedev/blankorg.sh index 621421d4..9e633e1c 100644 --- a/scripts/packagedev/blankorg.sh +++ b/scripts/packagedev/blankorg.sh @@ -4,10 +4,10 @@ echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Delete old blank org" -sfdx force:org:delete -p -u BlankOrg +sf force org delete --no-prompt --target-org BlankOrg echo "Creating new scratch org" -sfdx force:org:create --definitionfile config/enterprise-scratch-def.json --setalias BlankOrg --nonamespace --durationdays 7 --noancestors -w 20 +sf force org create --definitionfile config/enterprise-scratch-def.json --setalias BlankOrg --nonamespace --durationdays 7 --noancestors --wait 20 --setdefaultusername echo "opening org" -sfdx force:org:open -u BlankOrg \ No newline at end of file +sf org open --target-org BlankOrg \ No newline at end of file diff --git a/scripts/packagedev/build.sh b/scripts/packagedev/build.sh index cf4b60f1..1bf8c39e 100644 --- a/scripts/packagedev/build.sh +++ b/scripts/packagedev/build.sh @@ -15,7 +15,7 @@ npm run labsdevhub echo "set managed package" sed -i "" "s|\"namespace\": \"\"|\"namespace\": \"LabsActionPlans\"|" sfdx-project.json -sfdx force:package:version:create --codecoverage --package ActionPlans --path sfdx-source/LabsActionPlans --installationkeybypass --wait 20 +sf package version create --code-coverage --package ActionPlans --path sfdx-source/LabsActionPlans --installation-key-bypass --wait 20 echo "unset namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json diff --git a/scripts/packagedev/installlatest.sh b/scripts/packagedev/installlatest.sh index 43775eff..a77b8434 100644 --- a/scripts/packagedev/installlatest.sh +++ b/scripts/packagedev/installlatest.sh @@ -4,35 +4,35 @@ npm run labsdevhub echo "Delete old blank org" -sfdx force:org:delete -p -u PackageInstallTest +sf force org delete --no-prompt --target-org PackageInstallTest echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Creating new scratch org" -sfdx force:org:create --definitionfile config/enterprise-scratch-def.json --setalias PackageInstallTest --nonamespace --durationdays 7 --noancestors -w 20 +sf force org create --definitionfile config/enterprise-scratch-def.json --setalias PackageInstallTest --nonamespace --durationdays 7 --noancestors --wait 20 -LASTCREATEREQUESTID=$(sfdx force:package:version:create:list -s Success | tail -1 | awk '{print $1}' | tr -d "\n") +LASTCREATEREQUESTID=$(sf package version create list --status Success | tail -1 | awk '{print $1}' | tr -d "\n") echo "lastCreateRequestId $LASTCREATEREQUESTID" -PACKAGEVERSIONID=$(sfdx force:package:version:create:report -i $LASTCREATEREQUESTID --json | grep -o '"SubscriberPackageVersionId": "[^"]*' | grep -o '[^"]*$') +PACKAGEVERSIONID=$(sf package version create report --package-create-request-id $LASTCREATEREQUESTID --json | grep -o '"SubscriberPackageVersionId": "[^"]*' | grep -o '[^"]*$') echo "packageversionId $PACKAGEVERSIONID" -VERSIONJSON=$(sfdx force:package:version:report -p $PACKAGEVERSIONID --json) +VERSIONJSON=$(sf package version report --package $PACKAGEVERSIONID --json) #echo "versionjson $VERSIONJSON" VERSIONNUMBER=$(echo $VERSIONJSON | grep '.MajorVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.MinorVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.PatchVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.BuildNumber' | sed 's|[^0-9]||g') echo "Installing version $VERSIONNUMBER with package version $PACKAGEVERSIONID" -sfdx force:package:install --package $PACKAGEVERSIONID -u PackageInstallTest -w 20 +sf package install --package $PACKAGEVERSIONID --target-org PackageInstallTest --wait 20 echo "Adding unmanaged extension metadata" -sfdx force:source:deploy -p sfdx-source/unmanagedExtension -u PackageInstallTest +sf deploy metadata --source-dir sfdx-source/unmanagedExtension --target-org PackageInstallTest echo "Assigning permission set" -sfdx force:user:permset:assign -n LabsActionPlans__Action_Plans_Admin +sf org assign permset --name LabsActionPlans__Action_Plans_Admin echo "Install sample data" sfdx force:apex:execute -f ./data/sample-data-managed.apex echo "opening org" -sfdx force:org:open -u PackageInstallTest \ No newline at end of file +sf org open --target-org PackageInstallTest \ No newline at end of file diff --git a/scripts/packagedev/namespacedev.sh b/scripts/packagedev/namespacedev.sh index 4699b2c2..d5250a86 100644 --- a/scripts/packagedev/namespacedev.sh +++ b/scripts/packagedev/namespacedev.sh @@ -1,23 +1,23 @@ npm run labsdevhub echo "Cleaning previous scratch org..." -sfdx force:org:delete -p -u ActionPlans +sf force org delete --no-prompt --target-org ActionPlans echo "Using namespace" sed -i "" "s|\"namespace\": \"\"|\"namespace\": \"LabsActionPlans\"|" sfdx-project.json echo "Creating new scratch org" -sfdx force:org:create -f config/project-scratch-def.json -a ActionPlans -s --noancestors --durationdays 21 +sf force org create --definitionfile config/project-scratch-def.json --setalias ActionPlans --setdefaultusername --noancestors --durationdays 21 # For use with namespaced scratch org in package development process echo "Pushing managed metadata" -sfdx force:source:deploy -p sfdx-source/LabsActionPlans --tracksource +sf deploy metadata --source-dir sfdx-source/LabsActionPlans echo "Deploy unmanaged metadata" -sfdx force:source:deploy -p sfdx-source/unmanaged --tracksource +sf deploy metadata --source-dir sfdx-source/unmanaged echo "Assigning permission set" -sfdx force:user:permset:assign -n Action_Plans_Admin +sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Loading sample data" @@ -27,4 +27,4 @@ echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "opening org" -sfdx force:org:open -u ActionPlans \ No newline at end of file +sf org open --target-org ActionPlans \ No newline at end of file diff --git a/scripts/packagedev/packagedev.sh b/scripts/packagedev/packagedev.sh index 0b30cf07..0849c743 100644 --- a/scripts/packagedev/packagedev.sh +++ b/scripts/packagedev/packagedev.sh @@ -1,27 +1,27 @@ npm run labsdevhub echo "Cleaning previous scratch org..." -sfdx force:org:delete -p -u ActionPlans +sf force org delete --no-prompt --target-org ActionPlans echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Creating new scratch org" -sfdx force:org:create -f config/project-scratch-def.json -a ActionPlans -s --noancestors --durationdays 21 +sf force org create --definitionfile config/project-scratch-def.json --setalias ActionPlans --setdefaultusername --noancestors --durationdays 21 -# For use with namespaced scratch org in package development process +# For use with non-namespaced scratch org in package development process echo "Pushing managed metadata" -sfdx force:source:deploy -p sfdx-source/LabsActionPlans --tracksource +sf deploy metadata --source-dir sfdx-source/LabsActionPlans echo "Deploy unmanaged metadata" -sfdx force:source:deploy -p sfdx-source/unmanaged --tracksource +sf deploy metadata --source-dir sfdx-source/unmanaged echo "Assigning permission set" -sfdx force:user:permset:assign -n Action_Plans_Admin +sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Loading sample data" sfdx force:apex:execute -f ./data/sample-data.apex echo "opening org" -sfdx force:org:open -u ActionPlans \ No newline at end of file +sf org open --target-org ActionPlans \ No newline at end of file diff --git a/scripts/packagedev/professionalEdition.sh b/scripts/packagedev/professionalEdition.sh index 572e2b15..79734b89 100644 --- a/scripts/packagedev/professionalEdition.sh +++ b/scripts/packagedev/professionalEdition.sh @@ -1,26 +1,27 @@ npm run labsdevhub echo "Cleaning previous scratch org..." -sfdx force:org:delete -p -u ActionPlans +sf force org delete --no-prompt --target-org ActionPlansProf echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Creating new scratch org" -sfdx force:org:create -f config/professional-scratch-def.json -a ActionPlansProf -s --noancestors --durationdays 21 +#sf force org create --definitionfile config/professional-scratch-def.json --setalias ActionPlansProf --setdefaultusername --durationdays 21 --noancestors +sf force org create edition=Professional --setalias ActionPlansProf --setdefaultusername --noancestors --durationdays 21 echo "Pushing package metadata" -sfdx force:source:deploy -p sfdx-source/LabsActionPlans --tracksource +sf deploy metadata --source-dir sfdx-source/LabsActionPlans echo "Deploy unmanaged metadata" -sfdx force:source:deploy -p sfdx-source/unmanaged --tracksource +sf deploy metadata --source-dir sfdx-source/unmanaged echo "Assigning permission set" -sfdx force:user:permset:assign -n Action_Plans_Admin +sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Loading sample data" sfdx force:apex:execute -f ./data/sample-data.apex echo "opening org" -sfdx force:org:open -u ActionPlans \ No newline at end of file +sf org open --target-org ActionPlansProf \ No newline at end of file diff --git a/scripts/scratchorg.sh b/scripts/scratchorg.sh index 437dd9c8..d3d6c164 100755 --- a/scripts/scratchorg.sh +++ b/scripts/scratchorg.sh @@ -2,19 +2,19 @@ # Install script echo "Cleaning previous scratch org..." -sfdx force:org:delete -p -u ActionPlans +sf force org delete --no-prompt --target-org ActionPlans echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Creating new scratch org" -sfdx force:org:create --definitionfile config/project-scratch-def.json --setalias ActionPlans --nonamespace --setdefaultusername --noancestors +sf force org create --definitionfile config/project-scratch-def.json --setalias ActionPlans --nonamespace --setdefaultusername --noancestors --durationdays 7 echo "Deploying unmanaged main metadata" -sfdx force:source:deploy -p sfdx-source/LabsActionPlans --tracksource +sf deploy metadata --source-dir sfdx-source/LabsActionPlans echo "Assigning permission set" -sfdx force:user:permset:assign -n Action_Plans_Admin +sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Loading sample data" @@ -22,7 +22,7 @@ sfdx force:apex:execute -f ./data/sample-data.apex # To install sample Flow and other metadata echo "Deploy unmanaged extra metadata" -sfdx force:source:deploy -p sfdx-source/unmanaged --tracksource +sf deploy metadata --source-dir sfdx-source/unmanaged echo "opening org" -sfdx force:org:open \ No newline at end of file +sf org open \ No newline at end of file diff --git a/scripts/unmanaged.sh b/scripts/unmanaged.sh index 004e423a..fc48aa48 100644 --- a/scripts/unmanaged.sh +++ b/scripts/unmanaged.sh @@ -5,13 +5,13 @@ sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-proje # For use with developer edition or playground echo "Pushing source..." -sfdx force:source:deploy -p sfdx-source/LabsActionPlans --tracksource +sf deploy metadata --source-dir sfdx-source/LabsActionPlans echo "Assigning Permissions" -sfdx force:user:permset:assign -n Action_Plans_Admin +sf org assign permset --name Action_Plans_Admin # To install additional sample Accounts/Contacts -# sfdx force:data:tree:import -p ./data/action-plan-data-plan.json +# sf data import tree --plan ./data/action-plan-data-plan.json # To install sample action plan template echo "Adding sample data" @@ -19,7 +19,7 @@ sfdx force:apex:execute -f ./data/sample-data.apex # To install sample Flow and other metadata echo "deploying sample metadata" -sfdx force:source:deploy -p sfdx-source/unmanaged --tracksource +sf deploy metadata --source-dir sfdx-source/unmanaged echo "opening org..." -sfdx force:org:open \ No newline at end of file +sf org open \ No newline at end of file From 77fa73957caf481dd5081a258d6b5a9e3c72decc Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 22 Feb 2023 13:54:50 -0800 Subject: [PATCH 17/70] ci: update PR sfdx to sf, npm installation --- .github/workflows/pr.yml | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 4a5562ba..e0518d2f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -10,7 +10,7 @@ on: - 'config/**' - 'data/**' workflow_dispatch: - push: + # Jobs to be executed jobs: check-pmd: @@ -21,16 +21,10 @@ jobs: - name: 'Checkout source code' uses: actions/checkout@v3 - - name: 'Use latest PMD version' - run: | - VERSION=$(curl -s https://api.github.com/repos/pmd/pmd/releases/latest | grep '.tag_name' | sed 's:.*/::' | sed 's:",::') - echo $VERSION - echo -n $VERSION > pmd/pmd-version.txt - # Install PMD - name: 'Install PMD' run: | - PMD_VERSION=`cat pmd/pmd-version.txt` + PMD_VERSION=$(curl -s https://api.github.com/repos/pmd/pmd/releases/latest | grep '.tag_name' | sed 's:.*/::' | sed 's:",::') wget https://github.com/pmd/pmd/releases/download/pmd_releases%2F$PMD_VERSION/pmd-bin-$PMD_VERSION.zip unzip pmd-bin-$PMD_VERSION.zip -d ~ mv ~/pmd-bin-$PMD_VERSION ~/pmd @@ -50,11 +44,10 @@ jobs: # Install Salesforce CLI - name: 'Install Salesforce CLI' run: | - wget https://developer.salesforce.com/media/salesforce-cli/sfdx/channels/stable/sfdx-linux-x64.tar.xz - mkdir ~/sfdx - tar xJf sfdx-linux-x64.tar.xz -C ~/sfdx --strip-components 1 - echo "$HOME/sfdx/bin" >> $GITHUB_PATH - ~/sfdx/bin/sfdx version + npm install sfdx-cli --location=global + nodeInstallPath=$(npm config get prefix) + echo "$nodeInstallPath/bin" >> $GITHUB_PATH + sfdx --version # Store secret for dev hub - name: 'Populate auth file with DEVHUB_SFDX_URL secret' @@ -78,19 +71,23 @@ jobs: # Create scratch org - name: 'Create scratch org' - run: sfdx force:org:create -f config/project-scratch-def.json -a ActionPlans -s -d 1 -w 20 --noancestors + #run: sfdx force:org:create -f config/project-scratch-def.json -a ActionPlans -s -d 1 -w 20 --noancestors + run: sf force org create --definitionfile config/project-scratch-def.json --setalias ActionPlans --setdefaultusername --noancestors --durationdays 1 --wait 20 # Deploy source to scratch org - name: 'Push source to scratch org' - run: sfdx force:source:push + #run: sfdx force:source:push + run: sf deploy metadata # Assign permissionset - name: 'Assign permissionset to default user' - run: sfdx force:user:permset:assign -n Action_Plans_Admin + #run: sfdx force:user:permset:assign -n Action_Plans_Admin + run: sf org assign permset --name Action_Plans_Admin # Run Apex tests in scratch org - name: 'Run Apex tests' - run: sfdx force:apex:test:run --codecoverage --resultformat human -l RunLocalTests --wait 20 --outputdir ./ + run: sfdx force:apex:test:run --codecoverage --detailedcoverage --resultformat human -l RunLocalTests --wait 20 --outputdir ./ + #run: sf apex run tests --result-format human --detailed-coverage --wait 20 --test-level RunLocalTests --output-dir ./ # Upload code coverage to Codecov.io - name: 'Upload code coverage for Apex to Codecov.io' @@ -101,7 +98,7 @@ jobs: # Housekeeping - name: 'Delete scratch org' if: always() - run: sfdx force:org:delete --noprompt -u ActionPlans + run: sf force org delete --no-prompt --target-org ActionPlans # Remove namespace from project config - name: Remove namespace from project config From fa066cfc4ddeb5017957abe873bfc8ad22f155f6 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 22 Feb 2023 14:02:53 -0800 Subject: [PATCH 18/70] ci(codeQL): delete codeQL d/t IP address --- .github/workflows/codeql-analysis.yml | 70 --------------------------- 1 file changed, 70 deletions(-) delete mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 8b6fa65f..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,70 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: 'CodeQL' - -on: - push: - branches: [main] - pull_request: - # The branches below must be a subset of the branches above - branches: [main] - schedule: - - cron: '29 1 * * 5' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: ['javascript'] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://git.io/codeql-language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 From 645169a699339b7c1b5da1ade3280328dfa8b81e Mon Sep 17 00:00:00 2001 From: David Schach <636977+dschach@users.noreply.github.com> Date: Wed, 22 Feb 2023 16:39:51 -0800 Subject: [PATCH 19/70] feat: update API to 57.0 (#1) * ci(prettier): stop using local server * build(dependabot): include scope in updates * ci(sfdx): install sf executable * build: update recommended extensions --- .github/dependabot.yml | 6 +++-- .github/workflows/ci.yml | 14 +----------- .github/workflows/pr.yml | 1 + .vscode/extensions.json | 22 +++++++++---------- sfdx-project.json | 4 ++-- .../ActionPlanCreateInvocable.cls-meta.xml | 2 +- .../ActionPlanCreationController.cls-meta.xml | 2 +- .../ActionPlanDetailController.cls-meta.xml | 2 +- ...lanTemplateCreationController.cls-meta.xml | 2 +- ...nPlanTemplateDetailController.cls-meta.xml | 2 +- .../ActionPlanTemplateExport.cls-meta.xml | 2 +- .../ActionPlanTemplateImport.cls-meta.xml | 2 +- ...nPlanTemplateImportController.cls-meta.xml | 2 +- .../ActionPlansBuilderUtilities.cls-meta.xml | 2 +- ...ansCreateMultipleAPsExtension.cls-meta.xml | 2 +- ...lansDeleteMultipleAPExtension.cls-meta.xml | 2 +- .../ActionPlansPostInstallScript.cls-meta.xml | 2 +- .../ActionPlansQueueableBuilder.cls-meta.xml | 2 +- .../classes/ActionPlansRedirect.cls-meta.xml | 2 +- ...nPlansSectionHeaderController.cls-meta.xml | 2 +- ...tionPlansTaskTriggerUtilities.cls-meta.xml | 2 +- .../ActionPlansTestUtilities.cls-meta.xml | 2 +- .../ActionPlansTriggerHandlers.cls-meta.xml | 2 +- .../classes/ActionPlansUtilities.cls-meta.xml | 2 +- .../default/classes/CanTheUser.cls-meta.xml | 2 +- .../APLightningLookup.component-meta.xml | 2 +- .../components/APMessage.component-meta.xml | 2 +- .../APSectionHeader.component-meta.xml | 2 +- .../ActionPlanAPOwnerChange.page-meta.xml | 2 +- .../ActionPlanAPTOwnerChange.page-meta.xml | 2 +- .../pages/ActionPlanCreation.page-meta.xml | 2 +- .../ActionPlanDeleteMultipleAPs.page-meta.xml | 2 +- .../pages/ActionPlanDetail.page-meta.xml | 2 +- .../ActionPlanTaskOverride.page-meta.xml | 2 +- .../ActionPlanTemplateCreation.page-meta.xml | 2 +- .../ActionPlanTemplateDetail.page-meta.xml | 2 +- .../ActionPlanTemplateExport.page-meta.xml | 2 +- .../ActionPlanTemplateImport.page-meta.xml | 2 +- ...tionPlanTemplateTaskOverride.page-meta.xml | 2 +- ...onPlansCreateMultipleAccount.page-meta.xml | 2 +- ...nPlansCreateMultipleCampaign.page-meta.xml | 2 +- ...ctionPlansCreateMultipleCase.page-meta.xml | 2 +- ...onPlansCreateMultipleContact.page-meta.xml | 2 +- ...nPlansCreateMultipleContract.page-meta.xml | 2 +- ...ctionPlansCreateMultipleLead.page-meta.xml | 2 +- ...ansCreateMultipleOpportunity.page-meta.xml | 2 +- .../pages/ActionPlansHome.page-meta.xml | 2 +- ...ActionPlanCreateInvocableTest.cls-meta.xml | 2 +- ...ionPlanCreationControllerTest.cls-meta.xml | 2 +- ...onPlanCreationTaskWrapperTest.cls-meta.xml | 2 +- ...ctionPlanDetailControllerTest.cls-meta.xml | 2 +- ...PlanTemplateCreationCntrlTest.cls-meta.xml | 2 +- ...onPlanTemplateDetailCntrlTest.cls-meta.xml | 2 +- .../ActionPlanTemplateExportTest.cls-meta.xml | 2 +- ...onPlanTemplateImportCntrlTest.cls-meta.xml | 2 +- ...PlansCreateMultipleAPsExtTest.cls-meta.xml | 2 +- ...nPlansDeleteMultipleAPExtTest.cls-meta.xml | 2 +- ...ActionPlansObjectTriggersTest.cls-meta.xml | 2 +- ...ionPlansPostInstallScriptTest.cls-meta.xml | 2 +- ...tionPlansQueueableBuilderTest.cls-meta.xml | 2 +- .../ActionPlansRedirectTest.cls-meta.xml | 2 +- ...nsSectionHeaderControllerTest.cls-meta.xml | 2 +- ...PlansTaskTriggerUtilitiesTest.cls-meta.xml | 2 +- .../ActionPlansUtilitiesTest.cls-meta.xml | 2 +- .../default/tests/CanTheUserTest.cls-meta.xml | 2 +- .../triggers/APAccount.trigger-meta.xml | 2 +- .../triggers/APCampaign.trigger-meta.xml | 2 +- .../default/triggers/APCase.trigger-meta.xml | 2 +- .../triggers/APContact.trigger-meta.xml | 2 +- .../triggers/APContract.trigger-meta.xml | 2 +- .../default/triggers/APLead.trigger-meta.xml | 2 +- .../triggers/APOpportunity.trigger-meta.xml | 2 +- .../default/triggers/APTask.trigger-meta.xml | 2 +- .../triggers/ActionPlan.trigger-meta.xml | 2 +- .../triggers/ActionPlanTask.trigger-meta.xml | 2 +- .../ActionPlanTemplate.trigger-meta.xml | 2 +- .../ActionPlanTemplateTask.trigger-meta.xml | 2 +- ..._Customer_Onboarding_Actions.flow-meta.xml | 2 +- ..._Customer_Onboarding_Actions.flow-meta.xml | 2 +- 79 files changed, 93 insertions(+), 102 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c48286d3..810577bf 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,14 +8,16 @@ updates: - package-ecosystem: 'npm' # See documentation for possible values directory: '/' # Location of package manifests commit-message: - prefix: 'fix' + prefix: 'build' + include: 'scope' rebase-strategy: 'auto' schedule: interval: 'daily' - package-ecosystem: 'github-actions' # See documentation for possible values directory: '/' # Location of package manifests commit-message: - prefix: 'fix' + prefix: 'ci' + include: 'scope' rebase-strategy: 'auto' schedule: interval: 'daily' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05bf56a2..dc5f85b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,22 +41,10 @@ jobs: if: steps.cache-npm.outputs.cache-hit != 'true' run: npm ci - # Start local Apex parser server for Prettier - - name: 'Start local Apex parser server for Prettier' - run: npm run apex:local:start & - - # Wait for Apex parser server startup - - name: 'Wait for Apex parser server startup' - run: timeout 30 bash -c 'until printf "" 2>>/dev/null >>/dev/tcp/$0/$1; do sleep 1; done' 127.0.0.1 2117 - # Prettier formatting - name: 'Code formatting verification with Prettier' - run: npm run prettier:verify:apex:local + run: npm run prettier:verify - # Stop local Apex parser server for Prettier - - name: 'Stop local Apex parser server for Prettier' - if: always() - run: npm run apex:local:stop pmd-analysis: runs-on: ubuntu-latest needs: format-lint diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e0518d2f..98448b7c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -48,6 +48,7 @@ jobs: nodeInstallPath=$(npm config get prefix) echo "$nodeInstallPath/bin" >> $GITHUB_PATH sfdx --version + npm install @salesforce/cli --global # Store secret for dev hub - name: 'Populate auth file with DEVHUB_SFDX_URL secret' diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 957a5b00..eee32f43 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,14 +1,14 @@ { "recommendations": [ - "salesforce.salesforcedx-vscode", - "redhat.vscode-xml", - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "financialforce.lana", - "peterweinberg.apexdox-vs-code", - "chuckjonas.apex-pmd", - "matteopieroni.refresh-npm-packages", - "subc4i.sublime-mavensmate-monokai-apex", - "pkief.material-icon-theme" - ] + "chuckjonas.apex-pmd", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "financialforce.lana", + "matteopieroni.refresh-npm-packages", + "peterweinberg.apexdox-vs-code", + "pkief.material-icon-theme", + "redhat.vscode-xml", + "salesforce.salesforcedx-vscode", + "subc4i.sublime-mavensmate-monokai-apex" + ] } diff --git a/sfdx-project.json b/sfdx-project.json index 93781ca6..3cafd56b 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -9,7 +9,7 @@ "ancestorVersion": "4.2.0", "releaseNotesUrl": "https://github.com/SalesforceLabs/ActionPlansV4/blob/main/README.md", "definitionFile": "config/install-scratch-def.json", - "versionDescription": "Action Plans now suppports Tasks owned by Queues", + "versionDescription": "Action Plans now suppports Tasks owned by Queues and Professional Edition", "postInstallScript": "ActionPlansPostInstallScript", "postInstallUrl": "https://salesforcelabs.github.io/ActionPlansV4/" }, @@ -21,7 +21,7 @@ "name": "Action Plans", "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "56.0", + "sourceApiVersion": "57.0", "packageAliases": { "Action Plans": "0Ho5f000000oLlrCAE", "ActionPlans": "0Ho5f000000oLlrCAE", diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component-meta.xml b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component-meta.xml index 333e0177..07d28f45 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 diff --git a/sfdx-source/LabsActionPlans/main/default/components/APMessage.component-meta.xml b/sfdx-source/LabsActionPlans/main/default/components/APMessage.component-meta.xml index 4437b500..153cf25a 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APMessage.component-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/components/APMessage.component-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 diff --git a/sfdx-source/LabsActionPlans/main/default/components/APSectionHeader.component-meta.xml b/sfdx-source/LabsActionPlans/main/default/components/APSectionHeader.component-meta.xml index 67a4d042..422c2b4f 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APSectionHeader.component-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/components/APSectionHeader.component-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPOwnerChange.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPOwnerChange.page-meta.xml index 6a871a33..ce52a348 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPOwnerChange.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPOwnerChange.page-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPTOwnerChange.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPTOwnerChange.page-meta.xml index bc5cbfa4..b787b092 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPTOwnerChange.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPTOwnerChange.page-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page-meta.xml index ccfe751f..dc809614 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Creation and edit views of an Action Plan. diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDeleteMultipleAPs.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDeleteMultipleAPs.page-meta.xml index ad17ebd8..87ba5772 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDeleteMultipleAPs.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDeleteMultipleAPs.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Button on Action Plan list view for deleting multiple records diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDetail.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDetail.page-meta.xml index 1d8e4e63..3a4f0da8 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDetail.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDetail.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Detail view of an Action Plan. diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTaskOverride.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTaskOverride.page-meta.xml index 626c7176..f3da9711 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTaskOverride.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTaskOverride.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Redirect AP Task page to the Action Plan diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateCreation.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateCreation.page-meta.xml index 5a7189eb..b58b4532 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateCreation.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateCreation.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Creation page for Action Plan Templates. diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateDetail.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateDetail.page-meta.xml index f5e11042..76c798a1 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateDetail.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateDetail.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Detail page for Action Plan Templates. diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateExport.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateExport.page-meta.xml index 89ac304c..8e88a089 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateExport.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateExport.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Export Action Plan to XML format and save as a Document diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateImport.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateImport.page-meta.xml index 1b8cce2c..810e0ec9 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateImport.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateImport.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Import Action Plan Template as XML diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateTaskOverride.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateTaskOverride.page-meta.xml index 9bd11cc2..5c841fde 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateTaskOverride.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateTaskOverride.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false Redirect AP Template Task page to the Action Plan diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleAccount.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleAccount.page-meta.xml index a7c47644..80f2c947 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleAccount.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleAccount.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCampaign.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCampaign.page-meta.xml index 5a0f2875..5d45685c 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCampaign.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCampaign.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCase.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCase.page-meta.xml index 8af0b225..9435bf80 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCase.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCase.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContact.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContact.page-meta.xml index c7b046ea..55ad6d1f 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContact.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContact.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContract.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContract.page-meta.xml index 1ca230e1..90614a85 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContract.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContract.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleLead.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleLead.page-meta.xml index 7abd247b..a02921e0 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleLead.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleLead.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleOpportunity.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleOpportunity.page-meta.xml index 6459f71c..ce6093ca 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleOpportunity.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleOpportunity.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansHome.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansHome.page-meta.xml index 0b13d4da..095d2481 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansHome.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansHome.page-meta.xml @@ -1,6 +1,6 @@ - 56.0 + 57.0 true false List views of Action Plans and Action Plan Templates with tabs diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls-meta.xml index 1248daa8..a9fd6e9a 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls-meta.xml index fbbad0af..754ecb15 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APAccount.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APAccount.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APAccount.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APAccount.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APCampaign.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APCampaign.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APCampaign.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APCampaign.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APCase.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APCase.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APCase.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APCase.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APContact.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APContact.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APContact.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APContact.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APContract.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APContract.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APContract.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APContract.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APLead.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APLead.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APLead.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APLead.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APOpportunity.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APOpportunity.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APOpportunity.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APOpportunity.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APTask.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APTask.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APTask.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APTask.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlan.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlan.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlan.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlan.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTask.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTask.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTask.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTask.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplate.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplate.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplate.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplate.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplateTask.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplateTask.trigger-meta.xml index 24523ca6..b01a1f0b 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplateTask.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplateTask.trigger-meta.xml @@ -1,5 +1,5 @@ - 56.0 + 57.0 Active diff --git a/sfdx-source/unmanaged/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml b/sfdx-source/unmanaged/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml index a3d16333..941a35f5 100644 --- a/sfdx-source/unmanaged/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml +++ b/sfdx-source/unmanaged/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml @@ -34,7 +34,7 @@ true - 56.0 + 57.0 Sample Flow - change Account Type so it contains 'Customer' and if New Customer Onboarding Action Plan Template exists, it will be created as an Action Plan Formula to create a custom Action Plan Name diff --git a/sfdx-source/unmanagedExtension/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml b/sfdx-source/unmanagedExtension/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml index 08409cfe..9d032ecd 100644 --- a/sfdx-source/unmanagedExtension/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml +++ b/sfdx-source/unmanagedExtension/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml @@ -34,7 +34,7 @@ true - 56.0 + 57.0 Sample Flow - change Account Type so it contains 'Customer' and if New Customer Onboarding Action Plan Template exists, it will be created as an Action Plan Formula to create a custom Action Plan Name From 58b6c9b2d4ba2dd328ec0ab70affd221c6241639 Mon Sep 17 00:00:00 2001 From: David Schach <636977+dschach@users.noreply.github.com> Date: Wed, 22 Feb 2023 20:47:32 -0800 Subject: [PATCH 20/70] feat(tests): update tests (assertions, messages) (#3) * fix(docs): typo in variable description * build(pmd): add patterns to deploy rules * test: use Assert class, add messages * docs(README): add custom object test coverage --- README.md | 10 +- pmd/deployRules.xml | 39 +++++++ pmd/ruleset.xml | 6 +- .../ActionPlanTemplateDetailController.cls | 2 +- .../classes/ActionPlansTestUtilities.cls | 24 +++-- .../tests/ActionPlanCreateInvocableTest.cls | 12 ++- .../ActionPlanCreationControllerTest.cls | 77 +++++++------- .../ActionPlanCreationTaskWrapperTest.cls | 24 ++--- .../tests/ActionPlanDetailControllerTest.cls | 70 ++++++------ .../ActionPlanTemplateCreationCntrlTest.cls | 37 ++++--- .../ActionPlanTemplateDetailCntrlTest.cls | 31 +++--- .../tests/ActionPlanTemplateExportTest.cls | 7 +- .../ActionPlanTemplateImportCntrlTest.cls | 21 ++-- .../ActionPlansCreateMultipleAPsExtTest.cls | 6 +- .../ActionPlansDeleteMultipleAPExtTest.cls | 14 +-- .../tests/ActionPlansObjectTriggersTest.cls | 100 ++++++++++-------- .../ActionPlansPostInstallScriptTest.cls | 9 +- .../tests/ActionPlansQueueableBuilderTest.cls | 14 +-- .../default/tests/ActionPlansRedirectTest.cls | 11 +- .../ActionPlansTaskTriggerUtilitiesTest.cls | 76 ++++++------- .../tests/ActionPlansUtilitiesTest.cls | 98 +++++++++-------- 21 files changed, 393 insertions(+), 295 deletions(-) diff --git a/README.md b/README.md index 9f049280..2df39499 100644 --- a/README.md +++ b/README.md @@ -142,9 +142,15 @@ Note: The Apex used in Flows or via triggers does not require special permission 1. The related object will now be available for selection when creating a new Action Plan and relating it to an object. 1. Add the following code to the object trigger in `before delete` and `after undelete` contexts (removing the `LabsActionPlans` namespace if you're not using the managed package): ```apex - LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'Custom_Object__c' ); + LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' ); ``` ![](doc-assets/readme/ActionPlanFieldSet.png) + +## Test Code for Additional Objects + +Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage (not a best-practice!) just make a test method inserting and then deleting a record. +Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet. + ## Adding a New Custom Object Action Plan button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template. (Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: @@ -152,7 +158,7 @@ While Action Plans already overrides the New Action Plan action, the New button 1. Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link 1. Give it a label and name, such as "New MyObject Action Plan" 1. Display Type is List Button. Uncheck the list checkbox. -1. Use the following format for the button (removing the `LabsActionPlans` namespace if you're not using the managed package): +1. Use the following format for the button (removing the `LabsActionPlans__` namespace if you're not using the managed package): ```plaintext {!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType="CustomObject__c", refId=CustomObject__c.Id] )} ``` diff --git a/pmd/deployRules.xml b/pmd/deployRules.xml index 7b9268da..f8c3d5d8 100644 --- a/pmd/deployRules.xml +++ b/pmd/deployRules.xml @@ -110,10 +110,24 @@ 2 + + + + + + + + 2 + + + + + + @@ -123,18 +137,43 @@ 3 + + + + + + + + + 3 + + + + + 3 + + + + + + 3 + + + + + diff --git a/pmd/ruleset.xml b/pmd/ruleset.xml index 7444fa0e..47b0b628 100644 --- a/pmd/ruleset.xml +++ b/pmd/ruleset.xml @@ -129,7 +129,8 @@ - + + @@ -148,7 +149,8 @@ 3 - + + diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls index feaba9cf..3c876afc 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls @@ -22,7 +22,7 @@ public with sharing class ActionPlanTemplateDetailController { @TestVisible private ActionPlanTemplate__c actionPlanTemplate; /** - * The Id of the Action Plan for Exporting. Shown on the Export page that shares thsi controller + * The Id of the Action Plan for Exporting. Shown on the Export page that shares this controller */ public Id actionPlanExportXMLId { get; private set; } /** diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls index e0096ba7..430d9481 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls @@ -17,6 +17,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour * Utilities for Tests * @author {@link [David Schach](https://github.com/dschach)} * @since 2022 + * @since 2023 Begin exposing methods to cover custom objects * @group Utilities */ public inherited sharing class ActionPlansTestUtilities { @@ -170,7 +171,7 @@ public inherited sharing class ActionPlansTestUtilities { /** * Creates a new Campaign SObject - * Inserts before returning + *
      Inserts before returning * @return inserted `Campaign` * @see ActionPlansTestUtilities.createNewCampaign[0] */ @@ -196,7 +197,7 @@ public inherited sharing class ActionPlansTestUtilities { /** * Creates a new Case Object - * Inserts before returning + *
      Inserts before returning * @return inserted `Case` */ public Case createNewCase() { @@ -220,7 +221,7 @@ public inherited sharing class ActionPlansTestUtilities { /** * Creates a new Contact Object - * Inserts before returning + *
      Inserts before returning * @return inserted `Contact` */ public Contact createNewContact() { @@ -246,7 +247,7 @@ public inherited sharing class ActionPlansTestUtilities { } /** * Creates a new Contract Object - * Inserts before returning + *
      Inserts before returning * @return inserted `Contract` */ public Contract createNewContract() { @@ -273,7 +274,7 @@ public inherited sharing class ActionPlansTestUtilities { /** * Creates a new Lead Object - * Inserts before returning + *
      Inserts before returning * @return inserted `Lead` */ public Lead createNewLead() { @@ -300,7 +301,7 @@ public inherited sharing class ActionPlansTestUtilities { /** * Creates a new Opportunity Object - * Inserts before returning + *
      Inserts before returning * @return inserted `Opportunity` * @see ActionPlansTestUtilities.createNewOpportunity[0] */ @@ -312,10 +313,16 @@ public inherited sharing class ActionPlansTestUtilities { * Create Action Plan and APTaskss * @param relatedObject The Related Object (included field) for the Action Plan * @param numTasks How many tasks to create for the ActionPlan + * @param customObjectId For a Custom Object, pass in the Id of the created record so we don't have to do that here * @return new `ActionPlan__c` * @see ActionPlansTestUtilities.createNewActionPlanTask + * @example + * ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); + * ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3, null); + * or + * ActionPlan__c actionPlan = testUtil.createNewActionPlan('customObject__c', 3, '02a000000000000000'); */ - public ActionPlan__c createNewActionPlan(String relatedObject, Integer numTasks) { + public ActionPlan__c createNewActionPlan(String relatedObject, Integer numTasks, Id customObjectId) { ActionPlan__c newActionPlan = new ActionPlan__c(); newActionPlan.Name = this.createRandomWord('APName'); newActionPlan.StartDate__c = Date.today(); @@ -347,6 +354,9 @@ public inherited sharing class ActionPlansTestUtilities { when 'opportunity' { newActionPlan.Opportunity__c = this.createNewOpportunity().Id; } + when else { + newActionPlan.put(relatedObject, customObjectId); + } } insert newActionPlan; diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls index b38b9fa4..89153e91 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls @@ -14,8 +14,10 @@ For full license text, see the LICENSE file in the repo root or https://opensour */ /** * Test class for Invocable Apex class - * @since 2022 + * * @author {@link [David Schach](https://github.com/dschach)} + * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @see ActionPlanCreateInvocable * @group Tests */ @@ -320,7 +322,7 @@ private class ActionPlanCreateInvocableTest { /* for (Task t : [SELECT Id, ActivityDate FROM Task]) { System.debug('Task is due on ' + t.ActivityDate + ' which is a ' + ActionPlansUtilities.getDayOfWeek(t.ActivityDate)); } */ - Assert.areEqual(0, [SELECT COUNT() FROM Task WHERE ActivityDate = :upcomingWeekendDay]); + Assert.areEqual(0, [SELECT COUNT() FROM Task WHERE ActivityDate = :upcomingWeekendDay], 'Task should not have been scheduled for a weekend'); } @IsTest @@ -360,9 +362,9 @@ private class ActionPlanCreateInvocableTest { List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); Test.stopTest(); - Assert.areNotEqual(null, resultIDs); - Assert.areEqual(0, resultIDs.size()); - Assert.areEqual(0, [SELECT COUNT() FROM Task]); + Assert.areNotEqual(null, resultIDs, 'Returned List should not be null'); + Assert.isTrue(resultIDs.isEmpty(), 'Returned List should be empty'); + Assert.areEqual(0, [SELECT COUNT() FROM Task], 'No Tasks should have been created'); } /** diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls index 129ce236..e926c54b 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls @@ -15,6 +15,8 @@ For full license text, see the LICENSE file in the repo root or https://opensour /** * Tests for `ActionPlan__c` Create/Edit Visualforce Extension * @author {@link [David Schach](https://github.com/dschach)} + * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @see ActionPlanCreationController * @group Tests */ @@ -38,14 +40,14 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2, null); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); apCreateController.onLoad(); Assert.areEqual(0, ActionPlansTestUtilities.getCompleted(actionPlan.Id), 'New AP should have no completed tasks'); - Assert.areNotEqual(null, apCreateController.relatedFieldName, 'should have lazy loaded relatedFieldName'); + Assert.areNotEqual(null, apCreateController.relatedFieldName, 'Should have lazy loaded relatedFieldName'); apCreateController.getAllRelationshipFields(); - Assert.areEqual('', apCreateController.getTemplateName()); + Assert.areEqual('', apCreateController.getTemplateName(), 'Template should not have a name at this time'); //apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); apCreateController.relatedObjectId(); @@ -59,14 +61,14 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2, null); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); apCreateController.onLoad(); Assert.areEqual(0, ActionPlansTestUtilities.getCompleted(actionPlan.Id), 'New AP should have no completed tasks'); - Assert.areNotEqual(null, apCreateController.relatedFieldName, 'should have lazy loaded relatedFieldName'); + Assert.areNotEqual(null, apCreateController.relatedFieldName, 'Should have lazy loaded relatedFieldName'); apCreateController.getAllRelationshipFields(); - Assert.areEqual('', apCreateController.getTemplateName()); + Assert.areEqual('', apCreateController.getTemplateName(), 'Template should not have a name at this time'); //apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); apCreateController.relatedObjectId(); @@ -75,7 +77,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(viewPage); ActionPlanDetailController apdc = new ActionPlanDetailController(new Apexpages.StandardController(actionPlan)); - Assert.areNotEqual(0, apdc.getActionPlanTasks().size()); + Assert.isFalse(apdc.getActionPlanTasks().isEmpty(), 'Some AP Tasks should have been created'); } @IsTest @@ -84,30 +86,30 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2, null); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); apCreateController.onLoad(); apCreateController.save(); - Assert.areNotEqual(0, [SELECT COUNT() FROM Task]); + Assert.areNotEqual(0, [SELECT COUNT() FROM Task], 'Should have created Tasks automatically'); delete actionPlan; Test.stopTest(); - Assert.areEqual(0, [SELECT COUNT() FROM Task]); + Assert.areEqual(0, [SELECT COUNT() FROM Task], 'We failed to auto-delete our Tasks'); } @IsTest private static void newAPWithoutTasks() { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 0); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 0, null); Test.startTest(); Test.setCurrentPage(Page.ActionPlanCreation); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); apCreateController.onLoad(); Test.stopTest(); - Assert.isTrue(apCreateController.getTasks().isEmpty()); + Assert.isTrue(apCreateController.getTasks().isEmpty(), 'No AP Tasks (wrappers) should have been created'); } @IsTest @@ -122,7 +124,7 @@ private class ActionPlanCreationControllerTest { Assert.areNotEqual(null, apCreateController.relatedFieldName, 'should have lazy loaded relatedFieldName'); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2, null); apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); @@ -161,12 +163,13 @@ private class ActionPlanCreationControllerTest { apCreateController.save(); + // Unnecessary, but could be important if we add assertions Test.stopTest(); } @IsTest private static void actionPlanSave() { - ActionPlan__c ap = new ActionPlansTestUtilities().createNewActionPlan('contact', 3); + ActionPlan__c ap = new ActionPlansTestUtilities().createNewActionPlan('contact', 3, null); Contact contact = [SELECT Id FROM Contact LIMIT 1]; @@ -183,7 +186,7 @@ private class ActionPlanCreationControllerTest { apCreateController.save(); - Assert.areEqual(3, [SELECT COUNT() FROM Task]); + Assert.areEqual(3, [SELECT COUNT() FROM Task], 'Should NOT have created Tasks automatically'); APTask__c aptEmail = [SELECT Id, SendEmail__c FROM APTask__c LIMIT 1]; aptEmail.SendEmail__c = true; @@ -202,7 +205,7 @@ private class ActionPlanCreationControllerTest { List results = [SELECT Id, name, Contact__c FROM ActionPlan__c LIMIT 10000]; Assert.isFalse(results.isEmpty(), 'Action Plan not created'); - Assert.isTrue(results.size() == 1, 'Too many Action Plans created'); + Assert.isTrue(results.size() == 1, 'Too many Action Plans created - expected only 1'); apCreateController.cancel(); } @@ -247,7 +250,7 @@ private class ActionPlanCreationControllerTest { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); @@ -317,7 +320,6 @@ private class ActionPlanCreationControllerTest { Assert.areNotEqual(0, [SELECT COUNT() FROM ActionPlan__c WHERE Contact__c != NULL], 'Should have linked Action Plan to contact'); Assert.areEqual(conCOUNT * apTASKCOUNT, [SELECT COUNT() FROM APTask__c], 'Not enough Action Plan Tasks created'); - Assert.areEqual(conCOUNT * apTASKCOUNT, [SELECT COUNT() FROM Task], 'Wrong number of Tasks created'); } @IsTest @@ -325,7 +327,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2, null); Test.startTest(); @@ -357,7 +359,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2, null); // add code for shortening long record names actionPlan.Name = '1234567890123456789012345678901234567890'; // 40 characters @@ -382,7 +384,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0, null); User ownerUser = testUtil.createTestUser(); @@ -396,10 +398,10 @@ private class ActionPlanCreationControllerTest { ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); //apCreateController.apTasks = new List(); //apCreateController.getTasks(); - Assert.areEqual(1, apCreateController.getTasks().size()); + Assert.areEqual(1, apCreateController.getTasks().size(), 'Should have created 1 APTaskWrapper'); apCreateController.addTask(); List taskWrapList = apCreateController.getTasks(); - Assert.areEqual(2, taskWrapList.size()); + Assert.areEqual(2, taskWrapList.size(), 'Should have a total of 2 APTaskWrappers (failed to create the second one)'); ActionPlanCreationController.ApTaskWrapper taskWrap = taskWrapList[1]; @@ -412,7 +414,7 @@ private class ActionPlanCreationControllerTest { Test.stopTest(); - Assert.areEqual(2, [SELECT COUNT() FROM APTask__c]); + Assert.areEqual(2, [SELECT COUNT() FROM APTask__c], 'Should have created 2 APTasks automatically'); } @IsTest @@ -421,7 +423,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0, null); User ownerUser = testUtil.createTestUser(); @@ -430,7 +432,7 @@ private class ActionPlanCreationControllerTest { Id defaultTaskRTId = ActionPlansUtilities.getDefaultTaskRecordTypeId(); if (ActionPlansUtilities.taskUsesRecordTypes) { - Assert.areNotEqual(null, defaultTaskRTId); + Assert.areNotEqual(null, defaultTaskRTId, 'Failed to find the default Task record type Id'); } Test.startTest(); @@ -444,7 +446,7 @@ private class ActionPlanCreationControllerTest { Test.stopTest(); - Assert.areEqual(System.UserInfo.getUserId(), [SELECT Id, OwnerId FROM Task LIMIT 1].OwnerId); + Assert.areEqual(System.UserInfo.getUserId(), [SELECT Id, OwnerId FROM Task LIMIT 1].OwnerId, 'Current user should own the Task'); } @IsTest @@ -452,7 +454,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3, null); Test.startTest(); @@ -477,7 +479,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); @@ -496,7 +498,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', taskCOUNT); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', taskCOUNT, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); @@ -542,7 +544,7 @@ private class ActionPlanCreationControllerTest { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0, null); APTask__c newAPTask2 = testUtil.createNewActionPlanTask(actionPlan, 2, actionPlan.OwnerId, 'Email', null); newAPTask2.TaskIndex__c = 1; @@ -583,7 +585,7 @@ private class ActionPlanCreationControllerTest { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0, null); APTask__c newAPTask1 = new APTask__c(); APTask__c newAPTask2 = new APTask__c(); @@ -618,7 +620,6 @@ private class ActionPlanCreationControllerTest { apCreateController.save(); Assert.areNotEqual(null, apCreateController.getErrorMsg()); - Test.stopTest(); } @@ -702,7 +703,7 @@ private class ActionPlanCreationControllerTest { ActionPlansTestUtilities.forceHasRecordType = true; ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('contact', 5); + ActionPlan__c ap = testutil.createNewActionPlan('contact', 5, null); Test.startTest(); Test.setCurrentPage(Page.ActionPlanCreation); @@ -738,7 +739,7 @@ private class ActionPlanCreationControllerTest { ActionPlansTestUtilities.forceHasRecordType = true; ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testutil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testutil.createNewActionPlan('contact', 2, null); Test.startTest(); Test.setCurrentPage(Page.ActionPlanCreation); @@ -763,7 +764,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); - ActionPlan__c actionPlan = testutil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testutil.createNewActionPlan('contact', 2, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); @@ -780,7 +781,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', ActionPlansUtilities.MAX_APTASKS); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', ActionPlansUtilities.MAX_APTASKS, null); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); Assert.areNotEqual(null, apCreateController.relatedFieldName, 'should have lazy loaded relatedFieldName'); @@ -797,7 +798,7 @@ private class ActionPlanCreationControllerTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', ActionPlansUtilities.MAX_APTASKS + 1); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', ActionPlansUtilities.MAX_APTASKS + 1, null); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); Assert.areNotEqual(null, apCreateController.relatedFieldName, 'should have lazy loaded relatedFieldName'); diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls index e232b388..dc0cc196 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls @@ -45,14 +45,14 @@ private class ActionPlanCreationTaskWrapperTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); List apTaskList = apCreateController.getTasks(); for (ActionPlanCreationController.ApTaskWrapper wrap : apTaskList) { - Assert.areEqual(false, wrap.userRequired); + Assert.areEqual(false, wrap.userRequired, 'User should not have been a required field, but we required it. Look into this.'); } Test.stopTest(); Assert.isFalse(apTaskList.isEmpty(), 'Action plan task list is empty'); @@ -75,7 +75,7 @@ private class ActionPlanCreationTaskWrapperTest { apCreateController.actionPlan.Account__c = a.Id; List apTaskList = apCreateController.getTasks(); - Assert.isFalse(apTaskList.isEmpty()); + Assert.isFalse(apTaskList.isEmpty(), 'Should have collected APTaskWrappers'); for (ActionPlanCreationController.ApTaskWrapper wrap : apTaskList) { wrap.getUserRender(); } @@ -94,9 +94,9 @@ private class ActionPlanCreationTaskWrapperTest { apCreateController.onLoad(); apCreateController.inVisualforceContext = true; List apTaskList2 = apCreateController.getTasks(); - Assert.isFalse(apTaskList2.isEmpty()); + Assert.isFalse(apTaskList2.isEmpty(), 'Should have collected APTaskWrappers'); for (ActionPlanCreationController.ApTaskWrapper wrap : apTaskList2) { - Assert.areNotEqual(null, wrap.apt.User__c); + Assert.areNotEqual(null, wrap.apt.User__c, 'User field should NOT be null'); wrap.getUserRender(); } @@ -111,7 +111,7 @@ private class ActionPlanCreationTaskWrapperTest { } System.runAs(u) { ActionPlanCreationController apCreateController = doTemplateCreateEdit(); - Assert.areEqual(4, apCreateController.getTasks().size()); + Assert.areEqual(4, apCreateController.getTasks().size(), 'Incorrect number of Tasks to create collected'); } } @@ -130,7 +130,7 @@ private class ActionPlanCreationTaskWrapperTest { } System.runAs(u) { ActionPlanCreationController apCreateController = doTemplateCreateEdit(); - Assert.areEqual(4, apCreateController.getTasks().size()); + Assert.areEqual(4, apCreateController.getTasks().size(), 'Incorrect number of Tasks to create collected'); } } @@ -139,14 +139,14 @@ private class ActionPlanCreationTaskWrapperTest { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2, null); ActionPlanCreationController apCreateController = new ActionPlanCreationController(new Apexpages.StandardController(actionPlan)); //apCreateController.onLoad(); List apTaskList = apCreateController.getTasks(); - Assert.isFalse(apTaskList.isEmpty()); + Assert.isFalse(apTaskList.isEmpty(), 'Should have collected APTaskWrappers'); for (ActionPlanCreationController.ApTaskWrapper wrap : apTaskList) { - Assert.areNotEqual(null, wrap.apt.Id); + Assert.areNotEqual(null, wrap.apt.Id, 'We failed to list TaskWrappers with IDs'); wrap.getUserRender(); } Test.stopTest(); @@ -160,7 +160,7 @@ private class ActionPlanCreationTaskWrapperTest { u = new ActionPlansTestUtilities().createAdminUser(); } System.runAs(u) { - Assert.isTrue(Schema.sObjectType.APTask__c.fields.User__c.isUpdateable()); + Assert.isTrue(Schema.sObjectType.APTask__c.fields.User__c.isUpdateable(), 'Admin cannot update User field on Action Plan'); ActionPlanCreationController apCreateController = doEditActionPlan(); Assert.areEqual(0, ActionPlansTestUtilities.getCompleted(apCreateController.actionPlan.Id), 'New AP should have no completed tasks'); Assert.areNotEqual(null, apCreateController.relatedFieldName, 'should have lazy loaded relatedFieldName'); @@ -181,7 +181,7 @@ private class ActionPlanCreationTaskWrapperTest { u = new ActionPlansTestUtilities().createAdminUser(); } System.runAs(u) { - Assert.isTrue(Schema.sObjectType.APTask__c.fields.User__c.isUpdateable()); + Assert.isTrue(Schema.sObjectType.APTask__c.fields.User__c.isUpdateable(), 'Admin cannot update User field on Action Plan'); ActionPlanCreationController apCreateController = doEditActionPlan(); Assert.areEqual(0, ActionPlansTestUtilities.getCompleted(apCreateController.actionPlan.Id), 'New AP should have no completed tasks'); Assert.areNotEqual(null, apCreateController.relatedFieldName, 'should have lazy loaded relatedFieldName'); diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls index 98c586e8..8f17fb78 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls @@ -33,19 +33,19 @@ private class ActionPlanDetailControllerTest { Assert.areEqual(0, ActionPlansTestUtilities.getCompleted(null), 'New AP should have no completed tasks'); Assert.isTrue(apDetailController.getActionPlanTasks().isEmpty(), 'New Action Plan has no tasks'); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 1); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 1, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanDetailController apDetailController2 = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); - Assert.areEqual('Account', apDetailController2.getRelatedObjectLabel()); + Assert.areEqual('Account', apDetailController2.getRelatedObjectLabel(), 'Incorrect Related Object Label'); apDetailController2.getCanTransfer(); apDetailController2.getCanShare(); - Assert.areNotEqual(null, apDetailController2.hasRecordType); + Assert.areNotEqual(null, apDetailController2.hasRecordType, 'HasRecordType should be true or false. Never null.'); ActionPlanDetailController apDetailController3 = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); Test.stopTest(); - Assert.areNotEqual(0, apDetailController3.getActionPlanTasks().size()); + Assert.isFalse(apDetailController3.getActionPlanTasks().isEmpty(), 'Failed to collect AP Tasks (TaskWrappers)'); } @IsTest @@ -55,7 +55,7 @@ private class ActionPlanDetailControllerTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3, null); ActionPlanDetailController apDetailController = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); List apTasks = apDetailController.getActionPlanTasks(); @@ -73,7 +73,7 @@ private class ActionPlanDetailControllerTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0, null); ActionPlanDetailController apDetailController = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); List apTasks = apDetailController.getActionPlanTasks(); @@ -91,7 +91,7 @@ private class ActionPlanDetailControllerTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3, null); List apTasks = [SELECT Id, Controller__c FROM APTask__c]; apTasks[1].Controller__c = apTasks[0].Id; update apTasks; @@ -99,7 +99,7 @@ private class ActionPlanDetailControllerTest { ActionPlanDetailController apDetailController = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); apDetailController.getActionPlanTasks(); Test.stopTest(); - Assert.isTrue(apDetailController.gethasControllingTasks()); + Assert.isTrue(apDetailController.gethasControllingTasks(), 'Failed to find controlling tasks'); } @IsTest @@ -109,7 +109,7 @@ private class ActionPlanDetailControllerTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2, null); ActionPlanTemplate__c apTemplate = testUtil.createNewActionPlanTemplate(2); actionPlan.Action_Plan_Template__c = apTemplate.Id; @@ -117,12 +117,12 @@ private class ActionPlanDetailControllerTest { ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanDetailController apDetailController = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); - boolean versionName = apDetailController.getVersion(); + Boolean versionName = apDetailController.getVersion(); Test.stopTest(); //Checks if Action Plan Template has not been changed since the creation of the Action Plan. - Assert.isFalse(versionName); + Assert.isFalse(versionName, 'Somebody changed the APTemplate!'); apTemplate.Name = 'new name'; update apTemplate; @@ -143,7 +143,7 @@ private class ActionPlanDetailControllerTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 2, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanDetailController apDetailController = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); @@ -154,7 +154,7 @@ private class ActionPlanDetailControllerTest { Test.stopTest(); Assert.isTrue(actionPlanList.isEmpty(), 'Action Plan was not deleted'); - Assert.areEqual(0, [SELECT COUNT() FROM Task]); + Assert.areEqual(0, [SELECT COUNT() FROM Task], 'Should not have found any Tasks'); } @IsTest @@ -163,49 +163,49 @@ private class ActionPlanDetailControllerTest { Test.setCurrentPage(pageRef); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 0, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanDetailController apdc = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); String recName = apdc.getrelatedRecordName(); - Assert.areNotEqual(null, recName); - Assert.areEqual('Account', apdc.getRelatedObjectLabel()); + Assert.areNotEqual(null, recName, 'Failed to get correct related Record Name'); + Assert.areEqual('Account', apdc.getRelatedObjectLabel(), 'Incorrect Related Object Label'); - actionPlan = testUtil.createNewActionPlan('campaign', 0); + actionPlan = testUtil.createNewActionPlan('campaign', 0, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); apdc = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); recName = apdc.getrelatedRecordName(); - Assert.areNotEqual(null, recName); + Assert.areNotEqual(null, recName, 'Failed to get correct related Record Name'); - actionPlan = testUtil.createNewActionPlan('case', 0); + actionPlan = testUtil.createNewActionPlan('case', 0, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); apdc = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); recName = apdc.getrelatedRecordName(); - Assert.areNotEqual(null, recName); + Assert.areNotEqual(null, recName, 'Failed to get correct related Record Name'); - actionPlan = testUtil.createNewActionPlan('contact', 0); + actionPlan = testUtil.createNewActionPlan('contact', 0, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); apdc = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); recName = apdc.getrelatedRecordName(); - Assert.areNotEqual(null, recName); - Assert.areEqual('Contact', apdc.getRelatedObjectLabel()); + Assert.areNotEqual(null, recName, 'Failed to get correct related Record Name'); + Assert.areEqual('Contact', apdc.getRelatedObjectLabel(), 'Incorrect Related Object Label'); - actionPlan = testUtil.createNewActionPlan('contract', 0); + actionPlan = testUtil.createNewActionPlan('contract', 0, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); apdc = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); recName = apdc.getrelatedRecordName(); - Assert.areNotEqual(null, recName); + Assert.areNotEqual(null, recName, 'Failed to get correct related Record Name'); - actionPlan = testUtil.createNewActionPlan('lead', 0); + actionPlan = testUtil.createNewActionPlan('lead', 0, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); apdc = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); recName = apdc.getrelatedRecordName(); - Assert.areNotEqual(null, recName); + Assert.areNotEqual(null, recName, 'Failed to get correct related Record Name'); - actionPlan = testUtil.createNewActionPlan('opportunity', 0); + actionPlan = testUtil.createNewActionPlan('opportunity', 0, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); apdc = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); recName = apdc.getrelatedRecordName(); - Assert.areNotEqual(null, recName); + Assert.areNotEqual(null, recName, 'Failed to get correct related Record Name'); } @IsTest @@ -218,15 +218,15 @@ private class ActionPlanDetailControllerTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 1); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 1, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanDetailController apDetailController = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); Test.stopTest(); - Assert.areEqual(true, apDetailController.hasRecordType); - Assert.areNotEqual(null, apDetailController.getRecordTypeName()); + Assert.areEqual(true, apDetailController.hasRecordType, 'Failed to find the Record Type'); + Assert.areNotEqual(null, apDetailController.getRecordTypeName(), 'Failed to find the Record Type Name'); } @IsTest @@ -239,14 +239,14 @@ private class ActionPlanDetailControllerTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 1); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 1, null); ApexPages.currentPage().getParameters().put('id', actionPlan.Id); ActionPlanDetailController apDetailController2 = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); Test.stopTest(); - Assert.areEqual(false, apDetailController2.hasRecordType); - Assert.areEqual('', apDetailController2.getRecordTypeName()); + Assert.areEqual(false, apDetailController2.hasRecordType, 'Found a nonexistent Record Type'); + Assert.areEqual('', apDetailController2.getRecordTypeName(), 'Found a nonexistent Record Type Name!'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls index 109fe367..f7c9ae46 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls @@ -50,7 +50,7 @@ private class ActionPlanTemplateCreationCntrlTest { Test.stopTest(); - Assert.isFalse(aptcc.getTemplateTasks().isEmpty()); + Assert.isFalse(aptcc.getTemplateTasks().isEmpty(), 'Failed to collect all Template Tasks for the page'); } @IsTest @@ -77,8 +77,8 @@ private class ActionPlanTemplateCreationCntrlTest { Test.stopTest(); - Assert.isTrue(page != null); - Assert.isTrue(aptcc.saveAndNew() != null); + Assert.areNotEqual(null, page, 'Failed to instantiate a PageReference to go after saving the Template'); + Assert.areNotEqual(null, aptcc.saveAndNew(), 'Failed to successfully save the Template and start a new one'); } //Test Saves Action Plan Template and all tasks @@ -101,7 +101,7 @@ private class ActionPlanTemplateCreationCntrlTest { aptcc.saveTemplate(); - Assert.isFalse(aptcc.pendingTemplateTaskDeletes.isEmpty()); + Assert.isFalse(aptcc.pendingTemplateTaskDeletes.isEmpty(), 'Failed to collect all Template Tasks for deletion'); //Enter Task Catch() aptcc.pendingTemplateTaskDeletes = new List(); @@ -112,13 +112,13 @@ private class ActionPlanTemplateCreationCntrlTest { //aptcc.aptTasks.add(new APTemplateTask__c(DaysFromStart__c = -3)); aptcc.saveTemplate(); - Assert.isFalse(aptcc.aptTasks.isEmpty()); + Assert.isFalse(aptcc.aptTasks.isEmpty(), 'Failed to collect all Template Tasks for the page'); //Enter APT Catch() aptcc.actionPlanTemplate = null; aptcc.saveTemplate(); Test.stopTest(); - Assert.isFalse(aptcc.aptTasks.isEmpty()); + Assert.isFalse(aptcc.aptTasks.isEmpty(), 'Failed to collect all Template Tasks for the page'); } @IsTest @@ -139,7 +139,7 @@ private class ActionPlanTemplateCreationCntrlTest { Test.stopTest(); String urlVal = cancelPage.getUrl(); - Assert.isTrue(urlVal.containsIgnoreCase(apTemplate.Id)); + Assert.isTrue(urlVal.containsIgnoreCase(apTemplate.Id), 'Failed to construct the cancel page URL correctly: ' + urlVal); } @IsTest @@ -172,7 +172,7 @@ private class ActionPlanTemplateCreationCntrlTest { aptcc.saveTemplate(); Test.stopTest(); - Assert.areEqual(1, aptcc.getTemplateTaskSize()); + Assert.areEqual(1, aptcc.getTemplateTaskSize(), 'Failed to collect 1 Template Task for the page'); } @IsTest @@ -190,7 +190,7 @@ private class ActionPlanTemplateCreationCntrlTest { aptcc.getTemplateWrappers(); Test.stopTest(); - Assert.areEqual(false, aptcc.taskHasRecordType); + Assert.areEqual(false, aptcc.taskHasRecordType, 'Failed to force test to fail to see Record Types for Task'); } @IsTest @@ -207,7 +207,7 @@ private class ActionPlanTemplateCreationCntrlTest { aptcc.addTemplateTask(); Test.stopTest(); String errorMsg = aptcc.getErrorMsg(); - Assert.isTrue(errorMsg.containsIgnoreCase(String.valueOf(ActionPlansUtilities.MAX_APTASKS))); + Assert.isTrue(errorMsg.containsIgnoreCase(String.valueOf(ActionPlansUtilities.MAX_APTASKS)), 'Error message does not show correct nax tasks allowed'); } @IsTest @@ -227,7 +227,7 @@ private class ActionPlanTemplateCreationCntrlTest { Test.stopTest(); Integer taskCount = aptcc.getTemplateTaskSize(); - Assert.isTrue(taskCount > 2); + Assert.isTrue(taskCount > 2, 'We should have started a third Template Task wrapper for the page'); } @IsTest @@ -242,7 +242,7 @@ private class ActionPlanTemplateCreationCntrlTest { aptcc.addTemplateTask(); - Assert.isTrue(aptcc.geterrorMsg() == null, 'An error was returned when adding a template task '); + Assert.areEqual(null, aptcc.geterrorMsg(), 'An error was returned when adding a template task '); ActionPlanTemplate__c actionPlanTemplate2 = testUtil.createNewActionPlanTemplate(ActionPlansUtilities.MAX_APTASKS); aptcc = new ActionPlanTemplateCreationController(new ApexPages.StandardController(actionPlanTemplate2)); @@ -251,7 +251,7 @@ private class ActionPlanTemplateCreationCntrlTest { aptcc.addTemplateTask(); - Assert.isTrue(aptcc.geterrorMsg() != null, 'An error was not returned when adding a template task'); + Assert.areNotEqual(null, aptcc.geterrorMsg(), 'An error was not returned when adding a template task'); Test.stopTest(); } @@ -356,16 +356,15 @@ private class ActionPlanTemplateCreationCntrlTest { ActionPlanTemplateCreationController aptcc = new ActionPlanTemplateCreationController(new ApexPages.StandardController(apTemplate)); List taskList = aptcc.getTemplateWrappers(); - Integer numTasks = aptcc.getTemplateTaskSize(); - - //checks that the list is not empty - Assert.isFalse(taskList.isEmpty(), 'Task list was not empty'); Test.stopTest(); + Integer numTasks = aptcc.getTemplateTaskSize(); + //checks that the list is not empty + Assert.isFalse(taskList.isEmpty(), 'Task list was not empty'); //Checks to see if both methods return same task size - Assert.areEqual(numTasks, taskList.size()); - Assert.areEqual(TEMPLATE_TASKS_COUNT, taskList.size()); + Assert.areEqual(numTasks, taskList.size(), 'Failed to create the correct number of Template Tasks: ' + numTasks); + Assert.areEqual(TEMPLATE_TASKS_COUNT, taskList.size(), 'Failed to create the correct number of Template Tasks: ' + TEMPLATE_TASKS_COUNT); } @IsTest diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls index cf673967..b1dd8dc1 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls @@ -31,7 +31,7 @@ private class ActionPlanTemplateDetailCntrlTest { apTemplate = [SELECT Id, TaskRecordTypeId__c, OwnerId FROM ActionPlanTemplate__c WHERE Id = :apTemplate.Id LIMIT 1]; if (ActionPlansUtilities.taskUsesRecordTypes) { - Assert.areNotEqual(null, apTemplate.TaskRecordTypeID__c); + Assert.areNotEqual(null, apTemplate.TaskRecordTypeID__c, 'The org has Task Record Types, but we could not get one'); } Test.startTest(); @@ -43,9 +43,9 @@ private class ActionPlanTemplateDetailCntrlTest { apTemplateDetailController = new ActionPlanTemplateDetailController(new ApexPages.StandardController(apTemplate)); if (apTemplateDetailController.taskHasRecordType) { - Assert.areNotEqual('', apTemplateDetailController.getRecordTypeName()); + Assert.areNotEqual('', apTemplateDetailController.getRecordTypeName(), 'Task has Record Types - but we did not populate one for the picklist'); } else { - Assert.areEqual('', apTemplateDetailController.getRecordTypeName()); + Assert.areEqual('', apTemplateDetailController.getRecordTypeName(), 'Task has NO Record Types - but we populated one for the picklist'); } apTemplateDetailController.getCanTransfer(); @@ -53,7 +53,7 @@ private class ActionPlanTemplateDetailCntrlTest { Test.stopTest(); - Assert.isFalse(apTemplateDetailController.getTemplateTasks().isEmpty()); + Assert.isFalse(apTemplateDetailController.getTemplateTasks().isEmpty(), 'We failed to collect the AP Template Tasks'); } @IsTest @@ -74,8 +74,8 @@ private class ActionPlanTemplateDetailCntrlTest { Test.stopTest(); - Assert.areEqual(true, apTemplateDetailController.taskHasRecordType); - Assert.areNotEqual(null, apTemplateDetailController.getRecordTypeName()); + Assert.areEqual(true, apTemplateDetailController.taskHasRecordType, 'Failed to force test to see a Task Record Type even if one does not really exist'); + Assert.areNotEqual(null, apTemplateDetailController.getRecordTypeName(), 'Failed to force test to see a Task Record Type even if one does not really exist'); } @IsTest @@ -96,7 +96,7 @@ private class ActionPlanTemplateDetailCntrlTest { Test.stopTest(); - Assert.areEqual('', apTemplateDetailController.getRecordTypeName()); + Assert.areEqual('', apTemplateDetailController.getRecordTypeName(), 'Failed to force test to fail to see Record Types for Task'); } @IsTest @@ -114,7 +114,7 @@ private class ActionPlanTemplateDetailCntrlTest { Test.stopTest(); - Assert.isTrue(apTemplateDetailController.getTemplateTasks().isEmpty()); + Assert.isTrue(apTemplateDetailController.getTemplateTasks().isEmpty(), 'It should be impossible to create Template Tasks when none are on the template itself'); } @IsTest @@ -140,10 +140,11 @@ private class ActionPlanTemplateDetailCntrlTest { @IsTest private static void retrievingTemplateTasks() { + final Integer TASK_COUNT = 3; //NOPMD ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlanTemplate__c apTemplate = testUtil.createNewActionPlanTemplate(3); + ActionPlanTemplate__c apTemplate = testUtil.createNewActionPlanTemplate(TASK_COUNT); - Assert.areEqual(3, [SELECT COUNT() FROM APTemplateTask__c]); + Assert.areEqual(TASK_COUNT, [SELECT COUNT() FROM APTemplateTask__c], 'Failed to create ' + TASK_COUNT + ' AP Template Tasks'); Test.startTest(); Test.setCurrentPage(Page.ActionPlanTemplateDetail); @@ -157,7 +158,7 @@ private class ActionPlanTemplateDetailCntrlTest { Assert.isFalse(taskList.isEmpty(), 'action plan Template tasks is empty'); //checks that list contains total number of created tasks - Assert.areEqual(3, taskList.size()); + Assert.areEqual(TASK_COUNT, taskList.size(), 'Failed to create ' + TASK_COUNT + ' AP Template Tasks'); } @IsTest @@ -176,10 +177,10 @@ private class ActionPlanTemplateDetailCntrlTest { Test.stopTest(); //Checks to see if action plan template is retrieved - Assert.isTrue(apTemplate2 != null, 'action plan Template tasks is empty'); + Assert.areNotEqual(null, apTemplate2, 'we did not successfully retrieve the AP Template for the page'); //checks to see if both action plan templates are the same - Assert.areEqual(apTemplate2.Id, apTemplate.Id); + Assert.areEqual(apTemplate2.Id, apTemplate.Id, 'The template Ids did not match'); } @IsTest @@ -196,8 +197,8 @@ private class ActionPlanTemplateDetailCntrlTest { Test.stopTest(); - Assert.isTrue(controller.actionPlanExportXMLId != null); + Assert.areNotEqual(null, controller.actionPlanExportXMLId, 'Failed to find an Action Plan and return its ID'); - Assert.areNotEqual(null, controller.getSuccessMessage()); + Assert.areNotEqual(null, controller.getSuccessMessage(), 'We did not get a success message - export failed.'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls index 4e7fa9e5..4a615eb0 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls @@ -16,6 +16,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour * Tests for Template Export * @author {@link [David Schach](https://github.com/dschach)} * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @group Tests * @see ActionPlanTemplateExport * @see ActionPlanTemplateImportController @@ -34,7 +35,7 @@ private class ActionPlanTemplateExportTest { Test.stopTest(); - Assert.isTrue(xmlId != null); + Assert.areNotEqual(null, xmlId, 'Should have successfully created a Template with an Id'); } @IsTest @@ -51,7 +52,7 @@ private class ActionPlanTemplateExportTest { Test.stopTest(); - Assert.isTrue(xmlId != null); + Assert.areNotEqual(null, xmlId, 'Should have successfully created a Document with an Id'); } @IsTest @@ -68,6 +69,6 @@ private class ActionPlanTemplateExportTest { Test.stopTest(); - Assert.isTrue(xmlId != null); + Assert.areNotEqual(null, xmlId, 'Should have successfully created a File with an Id'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls index f6a1344a..ba4e1435 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls @@ -18,6 +18,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour * @group Tests * @author {@link [David Schach](https://github.com/dschach)} * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @see ActionPlanTemplateImportController */ @IsTest @@ -41,7 +42,7 @@ private class ActionPlanTemplateImportCntrlTest { Pagereference pageRef = controller.importTemplate(); - Assert.isTrue(pageRef != null); + Assert.areNotEqual(null, pageRef, 'We should have a valid importTemplate PageReference'); } @IsTest @@ -54,7 +55,7 @@ private class ActionPlanTemplateImportCntrlTest { Pagereference pageRef = controller.importTemplate(); - Assert.isTrue(pageRef == null, 'Should have had error on import'); + Assert.areEqual(null, pageRef, 'Should have had error on import'); } @IsTest @@ -68,7 +69,7 @@ private class ActionPlanTemplateImportCntrlTest { Pagereference pageRef = controller.importTemplate(); - Assert.isTrue(pageRef == null, 'Should have had error on import'); + Assert.areEqual(null, pageRef, 'Should have had error on import'); } @IsTest @@ -82,7 +83,7 @@ private class ActionPlanTemplateImportCntrlTest { Pagereference pageRef = controller.importTemplate(); - Assert.isTrue(pageRef == null, 'Should have had error on import'); + Assert.areEqual(null, pageRef, 'Should have had error on import'); } @IsTest @@ -96,7 +97,7 @@ private class ActionPlanTemplateImportCntrlTest { Pagereference pageRef = controller.importTemplate(); - Assert.isTrue(pageRef == null, 'Should have had error on import'); + Assert.areEqual(null, pageRef, 'Should have had error on import'); } @IsTest @@ -110,7 +111,7 @@ private class ActionPlanTemplateImportCntrlTest { Pagereference pageRef = controller.importTemplate(); - Assert.isTrue(pageRef == null, 'Should have had error on import'); + Assert.areEqual(null, pageRef, 'Should have had error on import'); } @IsTest @@ -124,7 +125,7 @@ private class ActionPlanTemplateImportCntrlTest { Pagereference pageRef = controller.importTemplate(); - Assert.isTrue(pageRef != null, 'Should be able to read file we generated'); + Assert.areNotEqual(null, pageRef, 'Should be able to read file we generated'); } @IsTest @@ -162,7 +163,7 @@ private class ActionPlanTemplateImportCntrlTest { Pagereference pageRef = controller.importTemplate(); - Assert.isTrue(pageRef != null, 'Should be able to read file we generated'); + Assert.areNotEqual(null, pageRef, 'Should be able to read file we generated'); } @IsTest @@ -187,8 +188,8 @@ private class ActionPlanTemplateImportCntrlTest { Test.stopTest(); - Assert.isTrue(pageRef != null, 'Should be able to read file we generated'); + Assert.areNotEqual(null, pageRef, 'Should be able to read file we generated'); - Assert.isTrue(xmlId != null); + Assert.areNotEqual(null, xmlId, 'Should have successfully created a Document with an Id'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls index 4cd1090c..517ad703 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls @@ -15,6 +15,8 @@ For full license text, see the LICENSE file in the repo root or https://opensour /** * Tests for the Visualforce controller extension for the button to enable creation of multiple action plans for all checked records in a list view * @author {@link [David Schach](https://github.com/dschach)} + * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @see ActionPlansCreateMultipleAPsExtension * @group Tests */ @@ -40,7 +42,7 @@ private class ActionPlansCreateMultipleAPsExtTest { PageReference newAPPage = ctrl.doRedirect(); - Assert.isTrue(newAPPage.geturl().containsIgnoreCase('%2C0')); + Assert.isTrue(newAPPage.getUrl().containsIgnoreCase('%2C0'), 'The URL for making multiple Action Plans is incorrect: ' + newAPPage.getUrl()); } @IsTest @@ -52,6 +54,6 @@ private class ActionPlansCreateMultipleAPsExtTest { PageReference newAPPage = ctrl.doRedirect(); Test.stopTest(); - Assert.areEqual(null, newAPPage); + Assert.areEqual(null, newAPPage, 'If there is no record selected, how did we generate a URL to show?'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls index bd5e75d5..724e20a6 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls @@ -58,7 +58,7 @@ private class ActionPlansDeleteMultipleAPExtTest { @IsTest private static void givenRecordsToDeleteThenDeleted() { List listActionPlan = [SELECT Id, Name FROM ActionPlan__c]; - Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c]); + Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c], 'Incorrect number of Action Plans found'); ApexPages.StandardSetController std = new ApexPages.StandardSetController(listActionPlan); std.setSelected(new List{ listActionPlan[0], listActionPlan[1] }); ActionPlansDeleteMultipleAPExtension ctrl = new ActionPlansDeleteMultipleAPExtension(std); @@ -66,13 +66,13 @@ private class ActionPlansDeleteMultipleAPExtTest { Test.startTest(); ctrl.deleteRecords(); Test.stopTest(); - Assert.areEqual(APS_TO_CREATE - 2, [SELECT COUNT() FROM ActionPlan__c]); + Assert.areEqual(APS_TO_CREATE - 2, [SELECT COUNT() FROM ActionPlan__c], 'Incorrect number of Action Plans found'); } @IsTest private static void givenNoRecordsToDeleteThenNotDeleted() { List listActionPlan = [SELECT Id, Name FROM ActionPlan__c]; - Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c]); + Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c], 'Incorrect number of Action Plans found'); ApexPages.StandardSetController std = new ApexPages.StandardSetController(listActionPlan); std.setSelected(new List{}); ActionPlansDeleteMultipleAPExtension ctrl = new ActionPlansDeleteMultipleAPExtension(std); @@ -81,8 +81,8 @@ private class ActionPlansDeleteMultipleAPExtTest { ctrl.deleteRecords(); Test.stopTest(); - Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c]); - Assert.areEqual(null, ctrl.deleteRecords()); + Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c], 'Incorrect number of Action Plans found'); + Assert.areEqual(null, ctrl.deleteRecords(), 'Should not have successfully deleted an Action Plan'); } @IsTest @@ -118,7 +118,7 @@ private class ActionPlansDeleteMultipleAPExtTest { System.runAs(minAccessUser) { List listActionPlan = [SELECT Id, Name FROM ActionPlan__c]; - Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c]); + Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c], 'Incorrect number of Action Plans found'); ApexPages.StandardSetController std = new ApexPages.StandardSetController(listActionPlan); std.setSelected(new List{ listActionPlan[0], listActionPlan[1] }); ActionPlansDeleteMultipleAPExtension ctrl = new ActionPlansDeleteMultipleAPExtension(std); @@ -126,6 +126,6 @@ private class ActionPlansDeleteMultipleAPExtTest { ctrl.deleteRecords(); Test.stopTest(); } - Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c]); + Assert.areEqual(APS_TO_CREATE, [SELECT COUNT() FROM ActionPlan__c], 'Incorrect number of Action Plans found'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls index 3fa7b655..f03ec047 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls @@ -37,7 +37,7 @@ private class ActionPlansObjectTriggersTest { @IsTest private static void accountTrigger() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('account', 1); + ActionPlan__c ap = testutil.createNewActionPlan('account', 1, null); Account a = [SELECT Id FROM Account WHERE Id = :ap.Account__c]; // Verifies that action plans are deleted when removing related object @@ -45,14 +45,16 @@ private class ActionPlansObjectTriggersTest { delete a; Test.stopTest(); List lAp = [SELECT Id FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.areEqual(0, lAp.size()); + Assert.isTrue(lAp.isEmpty(), 'Should not have any Action Plans left'); // Verifies catch is working fine ActionPlansTestUtilities.forceError = true; try { undelete a; - } catch (Dmlexception e) { - Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError)); + Assert.fail('Should not have been successful undelete'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have been a DML Exception'); + Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError), ' Undelete error message is wrong'); } ActionPlansTestUtilities.forceError = false; @@ -70,7 +72,7 @@ private class ActionPlansObjectTriggersTest { @IsTest private static void campaignTrigger() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('campaign', 1); + ActionPlan__c ap = testutil.createNewActionPlan('campaign', 1, null); Campaign c = [SELECT Id FROM Campaign WHERE Id = :ap.Campaign__c]; // Verifies that action plans are deleted when removing related object @@ -78,14 +80,16 @@ private class ActionPlansObjectTriggersTest { delete c; Test.stopTest(); List lAp = [SELECT Id FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.areEqual(0, lAp.size()); + Assert.isTrue(lAp.isEmpty(), 'Should not have any Action Plans left'); // Verifies catch is working fine ActionPlansTestUtilities.forceError = true; try { undelete c; - } catch (Dmlexception e) { - Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError)); + Assert.fail('Should not have been successful undelete'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have been a DML Exception'); + Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError), ' Undelete error message is wrong'); } ActionPlansTestUtilities.forceError = false; @@ -104,7 +108,7 @@ private class ActionPlansObjectTriggersTest { @IsTest private static void caseTrigger() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('case', 1); + ActionPlan__c ap = testutil.createNewActionPlan('case', 1, null); Case c = [SELECT Id FROM Case WHERE Id = :ap.Case__c]; // Verifies that action plans are undeleted when restoring related object @@ -112,14 +116,16 @@ private class ActionPlansObjectTriggersTest { delete c; Test.stopTest(); List lAp = [SELECT Id FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.areEqual(0, lAp.size()); + Assert.isTrue(lAp.isEmpty(), 'Should not have any Action Plans left'); // Verifies catch is working fine ActionPlansTestUtilities.forceError = true; try { undelete c; - } catch (Dmlexception e) { - Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError)); + Assert.fail('Should not have been successful undelete'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have been a DML Exception'); + Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError), ' Undelete error message is wrong'); } ActionPlansTestUtilities.forceError = false; @@ -138,7 +144,7 @@ private class ActionPlansObjectTriggersTest { @IsTest private static void contactTrigger() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('contact', 1); + ActionPlan__c ap = testutil.createNewActionPlan('contact', 1, null); Contact c = [SELECT Id FROM Contact WHERE Id = :ap.Contact__c]; // Verifies that action plans are undeleted when restoring related object @@ -146,14 +152,16 @@ private class ActionPlansObjectTriggersTest { delete c; Test.stopTest(); List lAp = [SELECT Id FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.areEqual(0, lAp.size()); + Assert.isTrue(lAp.isEmpty(), 'Should not have any Action Plans left'); // Verifies catch is working fine ActionPlansTestUtilities.forceError = true; try { undelete c; - } catch (Dmlexception e) { - Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError)); + Assert.fail('Should not have been successful undelete'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have been a DML Exception'); + Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError), ' Undelete error message is wrong'); } ActionPlansTestUtilities.forceError = false; @@ -172,7 +180,7 @@ private class ActionPlansObjectTriggersTest { @IsTest private static void contractTrigger() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('contract', 1); + ActionPlan__c ap = testutil.createNewActionPlan('contract', 1, null); Contract c = [SELECT Id FROM Contract WHERE Id = :ap.Contract__c]; // Verifies that action plans are undeleted when restoring related object @@ -180,14 +188,16 @@ private class ActionPlansObjectTriggersTest { delete c; Test.stopTest(); List lAp = [SELECT Id FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.areEqual(0, lAp.size()); + Assert.isTrue(lAp.isEmpty(), 'Should not have any Action Plans left'); // Verifies catch is working fine ActionPlansTestUtilities.forceError = true; try { undelete c; - } catch (Dmlexception e) { - Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError)); + Assert.fail('Should not have been successful undelete'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have been a DML Exception'); + Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError), ' Undelete error message is wrong'); } ActionPlansTestUtilities.forceError = false; @@ -206,7 +216,7 @@ private class ActionPlansObjectTriggersTest { @IsTest private static void leadTrigger() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('lead', 1); + ActionPlan__c ap = testutil.createNewActionPlan('lead', 1, null); Lead l = [SELECT Id FROM Lead WHERE Id = :ap.Lead__c]; // Verifies that action plans are undeleted when restoring related object @@ -214,14 +224,16 @@ private class ActionPlansObjectTriggersTest { delete l; Test.stopTest(); List lAp = [SELECT Id FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.areEqual(0, lAp.size()); + Assert.isTrue(lAp.isEmpty(), 'Should not have any Action Plans left'); // Verifies catch is working fine ActionPlansTestUtilities.forceError = true; try { undelete l; - } catch (Dmlexception e) { - Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError)); + Assert.fail('Should not have been successful undelete'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have been a DML Exception'); + Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError), ' Undelete error message is wrong'); } ActionPlansTestUtilities.forceError = false; @@ -240,7 +252,7 @@ private class ActionPlansObjectTriggersTest { @IsTest private static void opportunityTrigger() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('opportunity', 1); + ActionPlan__c ap = testutil.createNewActionPlan('opportunity', 1, null); Opportunity o = [SELECT Id FROM Opportunity WHERE Id = :ap.Opportunity__c]; // Verifies that action plans are undeleted when restoring related object @@ -248,14 +260,16 @@ private class ActionPlansObjectTriggersTest { delete o; Test.stopTest(); List lAp = [SELECT Id FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.areEqual(0, lAp.size()); + Assert.isTrue(lAp.isEmpty(), 'Should not have any Action Plans left'); // Verifies catch is working fine ActionPlansTestUtilities.forceError = true; try { undelete o; - } catch (Dmlexception e) { - Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError)); + Assert.fail('Should not have been successful undelete'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have been a DML Exception'); + Assert.isTrue(e.getMessage().contains(System.Label.ap_RelObjUndeleteError), ' Undelete error message is wrong'); } ActionPlansTestUtilities.forceError = false; @@ -278,7 +292,7 @@ private class ActionPlansObjectTriggersTest { testutil.assignAPPermissionSets(u.Id, true); System.runAs(new User(Id = UserInfo.getUserId())) { - testutil.createNewActionPlan('lead', 1); + testutil.createNewActionPlan('lead', 1, null); } Test.startTest(); @@ -291,7 +305,7 @@ private class ActionPlansObjectTriggersTest { update aps; } Lead l = [SELECT Id FROM Lead LIMIT 1]; - Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Lead__c != NULL]); + Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Lead__c != NULL], 'Incorrect number of Action Plans created'); Assert.areEqual(l.Id, [SELECT Lead__c FROM ActionPlan__c LIMIT 1].Lead__c, 'Our only lead should be on this action plan'); Database.LeadConvert lc = new Database.LeadConvert(); @@ -302,12 +316,12 @@ private class ActionPlansObjectTriggersTest { lc.setConvertedStatus(convertStatus.MasterLabel); Database.LeadConvertResult lcr = Database.convertLead(lc); - Assert.isTrue(lcr.isSuccess()); + Assert.isTrue(lcr.isSuccess(), 'Lead conversion failed'); } Test.stopTest(); - Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Contact__c != NULL]); + Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Contact__c != NULL], 'Incorrect number of Action Plans created'); } @IsTest @@ -317,7 +331,7 @@ private class ActionPlansObjectTriggersTest { testutil.assignAPPermissionSets(u.Id, true); System.runAs(new User(Id = UserInfo.getUserId())) { - testutil.createNewActionPlan('lead', 1); + testutil.createNewActionPlan('lead', 1, null); } Test.startTest(); @@ -332,10 +346,10 @@ private class ActionPlansObjectTriggersTest { update aps; } - Assert.isTrue(Schema.sObjectType.ActionPlan__c.fields.Account__c.isUpdateable()); + Assert.isTrue(Schema.sObjectType.ActionPlan__c.fields.Account__c.isUpdateable(), 'User unable to update Account field - cannot link Action Plan to Account'); - Assert.areEqual(0, [SELECT COUNT() FROM Account]); - Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Lead__c != NULL]); + Assert.areEqual(0, [SELECT COUNT() FROM Account], 'Incorrect number of Accounts found'); + Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Lead__c != NULL], 'Incorrect number of Action Plans created'); Database.LeadConvert lc = new Database.LeadConvert(); lc.setDoNotCreateOpportunity(true); @@ -345,15 +359,15 @@ private class ActionPlansObjectTriggersTest { lc.setConvertedStatus(convertStatus.MasterLabel); Database.LeadConvertResult lcr = Database.convertLead(lc); - Assert.isTrue(lcr.isSuccess()); - Assert.areEqual(1, [SELECT COUNT() FROM Account]); + Assert.isTrue(lcr.isSuccess(), 'Lead conversion failed'); + Assert.areEqual(1, [SELECT COUNT() FROM Account], 'Incorrect number of Accounts found'); System.debug('ActionPlan by test user: ' + [SELECT Id, Account__c, Contact__c, Lead__c FROM ActionPlan__c]); } Test.stopTest(); System.debug('ActionPlan by my user: ' + [SELECT Id, Account__c, Contact__c, Lead__c FROM ActionPlan__c]); - Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Account__c != NULL]); + Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Account__c != NULL], 'Incorrect number of Action Plans created'); } @IsTest @@ -363,7 +377,7 @@ private class ActionPlansObjectTriggersTest { //testutil.assignAPPermissionSets(u.Id, true); System.runAs(new User(Id = UserInfo.getUserId())) { - testutil.createNewActionPlan('lead', 1); + testutil.createNewActionPlan('lead', 1, null); } Test.startTest(); @@ -377,7 +391,7 @@ private class ActionPlansObjectTriggersTest { update aps; } - Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Lead__c != NULL]); + Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Lead__c != NULL], 'Incorrect number of Action Plans created'); Database.LeadConvert lc = new Database.LeadConvert(); lc.setDoNotCreateOpportunity(false); @@ -387,11 +401,11 @@ private class ActionPlansObjectTriggersTest { lc.setConvertedStatus(convertStatus.MasterLabel); Database.LeadConvertResult lcr = Database.convertLead(lc); - Assert.isTrue(lcr.isSuccess()); + Assert.isTrue(lcr.isSuccess(), 'Lead conversion failed'); } Test.stopTest(); - Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Opportunity__c != NULL]); + Assert.areEqual(1, [SELECT COUNT() FROM ActionPlan__c WHERE Opportunity__c != NULL], 'Incorrect number of Action Plans created'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls index c4cb1b3c..b515180c 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls @@ -12,6 +12,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour * Test for PostInstallScript Utility * @author {@link [David Schach](https://github.com/dschach)} * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @see ActionPlansPostInstallScript * @group Tests */ @@ -21,8 +22,12 @@ private class ActionPlansPostInstallScriptTest { private static void installScript() { ActionPlansPostInstallScript postinstall = new ActionPlansPostInstallScript(); Test.testInstall(postinstall, null); - Assert.areNotEqual(0, [SELECT COUNT() FROM ActionPlanTemplate__c]); - Assert.areEqual(true, Action_Plans_Settings__c.getInstance().Unassigned_Task_Assigned_to_Owner__c); + Assert.areNotEqual(0, [SELECT COUNT() FROM ActionPlanTemplate__c], 'We should have created an Action Plan Template'); + Assert.areEqual( + true, + Action_Plans_Settings__c.getInstance().Unassigned_Task_Assigned_to_Owner__c, + 'Custom Setting Unassigned_Task_Assigned_to_Owner default is incorrect. Should be true.' + ); Test.testInstall(postinstall, new Version(4, 0), false); Test.testInstall(postinstall, new Version(4, 0), true); } diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls index f3281b0f..8b4de629 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls @@ -15,6 +15,8 @@ For full license text, see the LICENSE file in the repo root or https://opensour /** * Test for Action Plans Queueable Builder * @author {@link [David Schach](https://github.com/dschach)} + * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @group Tests * @see ActionPlansQueuableBuilder */ @@ -37,7 +39,7 @@ private class ActionPlansQueueableBuilderTest { Test.startTest(); - ActionPlan__c ap = testutil.createNewActionPlan('contact', 5); + ActionPlan__c ap = testutil.createNewActionPlan('contact', 5, null); List apTasks = [ SELECT Action_Plan__c, @@ -80,8 +82,8 @@ private class ActionPlansQueueableBuilderTest { Test.stopTest(); AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed, TotalJobItems, CreatedBy.Email FROM AsyncApexJob WHERE Id = :queueId]; - Assert.areEqual('Completed', a.status); - Assert.areEqual(0, a.NumberOfErrors); + Assert.areEqual('Completed', a.Status, 'The queueable job did not complete successfully'); + Assert.areEqual(0, a.NumberOfErrors, 'The queueable job has errors'); } @IsTest @@ -91,7 +93,7 @@ private class ActionPlansQueueableBuilderTest { Test.startTest(); - ActionPlan__c ap = testutil.createNewActionPlan('opportunity', 5); + ActionPlan__c ap = testutil.createNewActionPlan('opportunity', 5, null); List apTasks = new List(); Opportunity op = new Opportunity(); @@ -116,7 +118,7 @@ private class ActionPlansQueueableBuilderTest { Test.stopTest(); AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed, TotalJobItems, CreatedBy.Email FROM AsyncApexJob WHERE Id = :queueId]; - Assert.areEqual('Completed', a.status); - Assert.areEqual(0, a.NumberOfErrors); + Assert.areEqual('Completed', a.Status, 'The queueable job did not complete successfully'); + Assert.areEqual(0, a.NumberOfErrors, 'The queueable job has errors'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls index 65e2c687..677d9f79 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls @@ -12,6 +12,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour * Test for Redirect Visualforce Controller * @author {@link [David Schach](https://github.com/dschach)} * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @see ActionPlansRedirect * @group Tests */ @@ -23,7 +24,7 @@ private class ActionPlansRedirectTest { ActionPlanTemplate__c apTemplate = testUtil.createNewActionPlanTemplate(2); Assert.areNotEqual(null, apTemplate.Id, 'We should have created an ActionPlan Template'); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('contact', 2, null); Assert.areNotEqual(null, actionPlan.Id, 'We should have created an ActionPlan'); } @@ -39,9 +40,9 @@ private class ActionPlansRedirectTest { Test.stopTest(); Pagereference cp = pr; - Assert.isFalse(cp.getURL().containsIgnoreCase(apt.Id)); + Assert.isFalse(cp.getURL().containsIgnoreCase(apt.Id), 'The redirect URL should not contain the APTask Id'); System.debug('CurrentPage ' + cp.getURL()); - Assert.isTrue(cp.getURL().containsIgnoreCase(apt.Action_Plan__c)); + Assert.isTrue(cp.getURL().containsIgnoreCase(apt.Action_Plan__c), 'The redirect URL should contain the Action Plan Id'); } @IsTest @@ -56,9 +57,9 @@ private class ActionPlansRedirectTest { Test.stopTest(); Pagereference cp = pr; - Assert.isFalse(cp.getURL().containsIgnoreCase(apttt.Id)); + Assert.isFalse(cp.getURL().containsIgnoreCase(apttt.Id), 'The redirect URL should not contain the APTemplateTask Id'); System.debug('CurrentPage ' + cp.getURL()); - Assert.isTrue(cp.getURL().containsIgnoreCase(apttt.Action_Plan_Template__c)); + Assert.isTrue(cp.getURL().containsIgnoreCase(apttt.Action_Plan_Template__c), 'The redirect URL should contain the Action Plan Template Id'); } @IsTest diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls index 95b4e930..99f68f4c 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls @@ -39,13 +39,13 @@ private class ActionPlansTaskTriggerUtilitiesTest { Task t = new Task(Subject = 'test task', ActivityDate = Date.today()); insert t; - ActionPlan__c ap = new ActionPlansTestUtilities().createNewActionPlan('account', 2); + ActionPlan__c ap = new ActionPlansTestUtilities().createNewActionPlan('account', 2, null); Test.startTest(); ActionPlansTaskTriggerUtilities.futureDeleteTasks(new Set{ t.Id }); ActionPlansTriggerHandlers.futureDeleteActionPlans(new Set{ ap.Id }); Test.stopTest(); - Assert.areEqual(0, [SELECT COUNT() FROM Task]); + Assert.areEqual(0, [SELECT COUNT() FROM Task], 'We should not have created a Task'); } /** @@ -57,7 +57,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { String testClosedStatus = closedStatuses[0]; ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testUtil.createNewActionPlan('account', 0); + ActionPlan__c ap = testUtil.createNewActionPlan('account', 0, null); List apTTaskIds = new List(); List apTaskList = new List(); @@ -113,7 +113,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { @IsTest private static void actionPlanDelete() { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testUtil.createNewActionPlan('contact', 0); + ActionPlan__c ap = testUtil.createNewActionPlan('contact', 0, null); ap.SkipWeekends__c = true; ap.SkipDay__c = 'End of previous week'; update ap; @@ -157,7 +157,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { Test.stopTest(); - Assert.isTrue(apTask.isEmpty()); + Assert.isTrue(apTask.isEmpty(), 'We should have some records here'); Assert.areEqual(0, [SELECT COUNT() FROM Task], 'Deleting Action Plan should delete the APTask Task records as well'); } @@ -167,7 +167,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { @IsTest private static void aPTaskUpdate() { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testUtil.createNewActionPlan('opportunity', 0); + ActionPlan__c ap = testUtil.createNewActionPlan('opportunity', 0, null); ap.SkipWeekends__c = true; ap.SkipDay__c = 'End of previous week'; update ap; @@ -219,7 +219,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { Test.stopTest(); - Assert.isFalse(apTask.isEmpty()); + Assert.isFalse(apTask.isEmpty(), 'We should have some records here'); } /** @@ -230,7 +230,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testUtil.createNewActionPlan('contract', 1); + ActionPlan__c ap = testUtil.createNewActionPlan('contract', 1, null); ap.SkipWeekends__c = true; ap.SkipDay__c = 'End of previous week'; update ap; @@ -249,10 +249,10 @@ private class ActionPlansTaskTriggerUtilitiesTest { // delete the APTask delete at; - List apttDel = [SELECT Id FROM APTask__c WHERE Id = :at.Id]; - Assert.isTrue(apttDel.isEmpty()); - Assert.areEqual(0, [SELECT COUNT() FROM APTask__c]); - Assert.areEqual(0, [SELECT COUNT() FROM Task]); + List aptDel = [SELECT Id FROM APTask__c WHERE Id = :at.Id]; + Assert.isTrue(aptDel.isEmpty(), 'We should not have created this specific AP Task'); + Assert.areEqual(0, [SELECT COUNT() FROM APTask__c], 'We should not have created any AP Tasks'); + Assert.areEqual(0, [SELECT COUNT() FROM Task], 'We should not have created any Tasks'); // undelete task and APTask and get exception List ids = new List(); @@ -264,7 +264,9 @@ private class ActionPlansTaskTriggerUtilitiesTest { Boolean hasError = false; try { Database.undelete(t.Id); - } catch (DmlException e) { + Assert.fail('Undelete should not have been successful'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have thrown a DML Exception'); hasError = true; } Assert.isTrue(hasError, 'Should have not been able to undelete this task, as it was already undeleted'); @@ -272,17 +274,18 @@ private class ActionPlansTaskTriggerUtilitiesTest { hasError = false; try { Database.undelete(ids); - } catch (Dmlexception e) { + Assert.fail('Undelete should not have been successful'); + } catch (Exception e) { + Assert.isInstanceOfType(e, DmlException.class, 'Should have thrown a DML Exception'); hasError = true; - Assert.isTrue(hasError, e.getMessage()); } - Assert.isTrue(hasError); + Assert.isTrue(hasError, 'That should have given us an error'); // now undelete and trigger the code if (![SELECT Id FROM APTask__c WHERE Id = :at.Id AND isDeleted = TRUE ALL ROWS].isEmpty()) { undelete at; List apttUnDel = [SELECT Id FROM APTask__c WHERE Id = :at.Id]; - Assert.areEqual(1, apttUnDel.size()); + Assert.areEqual(1, apttUnDel.size(), 'APTask was NOT successfully undeleted'); } Test.stopTest(); @@ -296,7 +299,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testUtil.createNewActionPlan('campaign', 3); + ActionPlan__c ap = testUtil.createNewActionPlan('campaign', 3, null); ap.SkipWeekends__c = true; ap.SkipDay__c = 'End of previous week'; update ap; @@ -318,30 +321,33 @@ private class ActionPlansTaskTriggerUtilitiesTest { // delete the APTask Template delete at; + Test.stopTest(); + // ! KNOWN Platform bug that emptyRecycleBin doesn't work in testing Database.emptyRecycleBin(t); List apttDel = [SELECT Id FROM APTask__c WHERE Id = :at.Id]; - Assert.isTrue(apttDel.isEmpty()); + Assert.isTrue(apttDel.isEmpty(), 'Not all APTasks were deleted!'); // undelete task and APTask and get exception Boolean hasError = false; try { Database.undelete(ids); - } catch (Dmlexception e) { + Assert.fail('It looks like we were able to undelete the records - the bug has been fixed?'); + } catch (Exception e) { //System.debug('Dmlexception: ' + e.getMessage()); - Assert.isTrue(e.getMessage().contains(System.Label.ap_Error), e.getMessage() + '(APTask__c undelete error should have the proper format)'); + Assert.isTrue(e.getMessage().contains(System.Label.ap_Error), e.getMessage() + ' (APTask__c undelete error should have the proper format)'); hasError = true; } - - Test.stopTest(); + Assert.isTrue(hasError, 'The emptyRecycleBin bug seems to have been fixed'); } + /** * Test Task After Update trigger when updating task to status 'In Progress' (or another open status) */ @IsTest private static void taskAfterUpdateToOpen() { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testUtil.createNewActionPlan('lead', 0); + ActionPlan__c ap = testUtil.createNewActionPlan('lead', 0, null); List apTTaskIds = new List(); List apTask = new List(); @@ -389,7 +395,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { apTask = [SELECT Id FROM Task WHERE TaskAPTask__c = :apTTaskIds[0]]; Test.stopTest(); - Assert.isFalse(apTask.isEmpty()); + Assert.isFalse(apTask.isEmpty(), 'We failed to create a Task'); } /** @@ -399,7 +405,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { private static void taskBeforeDelete() { Test.startTest(); ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testUtil.createNewActionPlan('account', 0); + ActionPlan__c ap = testUtil.createNewActionPlan('account', 0, null); Id testUserId = testUtil.createTestUser().Id; Id defaultRTID = ActionPlansUtilities.getDefaultTaskRecordTypeId(); @@ -457,9 +463,9 @@ private class ActionPlansTaskTriggerUtilitiesTest { //check if the dependent task was created List newTaskList = [SELECT Status, Id FROM Task WHERE TaskAPTask__c = :at2.Id]; - Assert.isFalse(newTaskList.isEmpty()); + Assert.isFalse(newTaskList.isEmpty(), 'We failed to create a Task'); newTaskList = [SELECT Id FROM Task WHERE IsClosed = FALSE]; - Assert.areEqual(1, newTaskList.size()); + Assert.areEqual(1, newTaskList.size(), 'We failed to create only a single open Task'); } /** @@ -471,7 +477,7 @@ private class ActionPlansTaskTriggerUtilitiesTest { private static void taskAssignToQueue() { // TODO: Check settings to see if Tasks *can* be assigned to queues ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - ActionPlan__c actionPlan = testUtil.createNewActionPlan('lead', 3); + ActionPlan__c actionPlan = testUtil.createNewActionPlan('lead', 3, null); List aptList = [SELECT Id, User__c, Priority__c, Subject__c FROM APTask__c WHERE Action_Plan__c = :actionPlan.Id]; APTask__c at = aptList[0]; @@ -510,14 +516,12 @@ private class ActionPlansTaskTriggerUtilitiesTest { Boolean hasQueueAssignedTask = false; ActionPlanDetailController apDetailController = new ActionPlanDetailController(new ApexPages.StandardController(actionPlan)); for (ActionPlanDetailController.TaskWrapper wrap : apDetailController.getActionPlanTasks()) { - if (wrap.taskId != null) { - if (ActionPlansUtilities.idStartsWith(wrap.taskOwnerId, '00G')) { - hasQueueAssignedTask = true; - Assert.isTrue(wrap.taskOwnerName.equalsIgnoreCase(g1.Name)); - Assert.isTrue(ActionPlansUtilities.idStartsWith(wrap.apt.User__c, '005')); - } + if (wrap.taskId != null && ActionPlansUtilities.idStartsWith(wrap.taskOwnerId, '00G')) { + hasQueueAssignedTask = true; + Assert.isTrue(wrap.taskOwnerName.equalsIgnoreCase(g1.Name), 'Incorrect owner assigned'); + //Assert.isTrue(ActionPlansUtilities.idStartsWith(wrap.apt.User__c, '005'), 'Should have assigned Task to a User, not a Queue'); } } - Assert.isTrue(hasQueueAssignedTask); + Assert.isTrue(hasQueueAssignedTask, 'Should have assigned the Task to a Queue'); } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls index a25eca6e..6e0d4754 100644 --- a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls +++ b/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls @@ -11,6 +11,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour /** * @author {@link [David Schach](https://github.com/dschach)} * @since 2022 + * @since 2023 System.assert to Assert class + error messages * @group Tests * @see ActionPlansUtilities */ @@ -31,7 +32,7 @@ private class ActionPlansUtilitiesTest { @IsTest private static void saveSingle() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('account', 0); + ActionPlan__c ap = testutil.createNewActionPlan('account', 0, null); User testUser = testutil.createTestUser(); @@ -55,7 +56,7 @@ private class ActionPlansUtilitiesTest { apcc.save(); ActionPlan__c rap = [SELECT Id FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.isTrue(rap != null); + Assert.areNotEqual(null, rap, 'The Action Plan should exist'); Test.stopTest(); } @@ -63,7 +64,7 @@ private class ActionPlansUtilitiesTest { @IsTest private static void saveMultiple() { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('account', 0); + ActionPlan__c ap = testutil.createNewActionPlan('account', 0, null); User testUser = testutil.createTestUser(); @@ -87,12 +88,12 @@ private class ActionPlansUtilitiesTest { apcc.saveMultipleAP(); Test.stopTest(); ActionPlan__c rap = [SELECT Id, Account__c FROM ActionPlan__c WHERE Id = :ap.Id]; - Assert.isTrue(rap.Account__c == ap.Account__c); + Assert.areEqual(rap.Account__c, ap.Account__c, 'Account Id on the Action Plan is incorrect'); } @IsTest private static void account() { - Assert.isTrue(testObject('Account')); + Assert.isTrue(testObject('Account', null), 'We did not create the test SObject correctly'); Assert.areNotEqual(0, [SELECT COUNT() FROM ActionPlan__c], 'We should have an Action Plan'); Test.startTest(); delete [SELECT Id FROM Account]; @@ -102,7 +103,7 @@ private class ActionPlansUtilitiesTest { @IsTest private static void contact() { - Assert.isTrue(testObject('Contact')); + Assert.isTrue(testObject('Contact', null), 'We did not create the test SObject correctly'); Assert.areNotEqual(0, [SELECT COUNT() FROM ActionPlan__c], 'We should have an Action Plan'); Test.startTest(); Account a = [SELECT Id FROM Account]; @@ -115,37 +116,39 @@ private class ActionPlansUtilitiesTest { @IsTest private static void lead() { - Assert.isTrue(testObject('Lead')); + Assert.isTrue(testObject('Lead', null), 'We did not create the test SObject correctly'); } @IsTest private static void case() { - Assert.isTrue(testObject('Case')); + Assert.isTrue(testObject('Case', null), 'We did not create the test SObject correctly'); } @IsTest private static void campaign() { - Assert.isTrue(testObject('Campaign')); + Assert.isTrue(testObject('Campaign', null), 'We did not create the test SObject correctly'); } @IsTest private static void contract() { - Assert.isTrue(testObject('Contract')); + Assert.isTrue(testObject('Contract', null), 'We did not create the test SObject correctly'); } /** - * Pass in any object and create an Action Plan for that object + * Pass in any object name (and its ID if a custom object) and create an Action Plan for that object + *
      Will be global in the next version so test code for custom objects can access it * @author {@link [David Schach](https://github.com/dschach)} * @param objectName The object name + * @param recordId Pass in the Id of a custom object record so we can make an Action Plan for it * @return Success at creating tasks for the Action Plan */ - private static Boolean testObject(String objectName) { + public static Boolean testObject(String objectName, Id recordId) { Test.setCurrentPage(Page.ActionPlanCreation); ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); ActionPlanTemplate__c apt = testutil.createNewActionPlanTemplate(5); - ActionPlan__c ap = testutil.createNewActionPlan(objectName, 3); + ActionPlan__c ap = testutil.createNewActionPlan(objectName, 3, recordId); ApexPages.currentPage().getParameters().put('refType', objectName); ApexPages.currentPage().getParameters().put('templateId', null); @@ -177,46 +180,46 @@ private class ActionPlansUtilitiesTest { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('account', 0); + ActionPlan__c ap = testutil.createNewActionPlan('account', 0, null); ApexPages.currentPage().getParameters().put('refType', 'Account'); ApexPages.currentPage().getParameters().put('refId', ap.Account__c + ',' + testutil.createNewAccount().id); apcc = new ActionPlanCreationController(new ApexPages.StandardController(new ActionPlan__c())); page = apcc.cancel(); - Assert.isTrue(page != null); + Assert.areNotEqual(null, page, 'Cancel should have returned us to a real page'); - testutil.createNewActionPlan('contact', 0); + testutil.createNewActionPlan('contact', 0, null); ApexPages.currentPage().getParameters().put('refType', 'Contact'); ApexPages.currentPage().getParameters().put('refId', ap.Contact__c + ',' + testutil.createNewContact().id); apcc = new ActionPlanCreationController(new ApexPages.StandardController(new ActionPlan__c())); page = apcc.cancel(); - Assert.isTrue(page != null); + Assert.areNotEqual(null, page, 'Cancel should have returned us to a real page'); - testutil.createNewActionPlan('lead', 0); + testutil.createNewActionPlan('lead', 0, null); ApexPages.currentPage().getParameters().put('refType', 'Lead'); ApexPages.currentPage().getParameters().put('refId', ap.Lead__c + ',' + testutil.createNewLead().id); apcc = new ActionPlanCreationController(new ApexPages.StandardController(new ActionPlan__c())); page = apcc.cancel(); - Assert.isTrue(page != null); + Assert.areNotEqual(null, page, 'Cancel should have returned us to a real page'); - testutil.createNewActionPlan('opportunity', 0); + testutil.createNewActionPlan('opportunity', 0, null); ApexPages.currentPage().getParameters().put('refType', 'Opportunity'); ApexPages.currentPage().getParameters().put('refId', ap.Opportunity__c + ',' + testutil.createNewOpportunity().id); apcc = new ActionPlanCreationController(new ApexPages.StandardController(new ActionPlan__c())); page = apcc.cancel(); - Assert.isTrue(page != null); + Assert.areNotEqual(null, page, 'Cancel should have returned us to a real page'); - testutil.createNewActionPlan('account', 0); - ApexPages.currentPage().getParameters().put('refType', 'Account'); - ApexPages.currentPage().getParameters().put('refId', ap.Account__c); + testutil.createNewActionPlan('contract', 0, null); + ApexPages.currentPage().getParameters().put('refType', 'Contract'); + ApexPages.currentPage().getParameters().put('refId', ap.Contract__c); apcc = new ActionPlanCreationController(new ApexPages.StandardController(new ActionPlan__c())); page = apcc.cancel(); - Assert.isTrue(page != null); + Assert.areNotEqual(null, page, 'Cancel should have returned us to a real page'); ActionPlanTemplate__c apt = testutil.createNewActionPlanTemplate(0); ApexPages.currentPage().getParameters().put('templateId', apt.Id); apcc = new ActionPlanCreationController(new ApexPages.StandardController(new ActionPlan__c())); page = apcc.cancel(); - Assert.isTrue(page != null); + Assert.areNotEqual(null, page, 'Cancel should have returned us to a real page'); Test.stopTest(); } @@ -226,25 +229,25 @@ private class ActionPlansUtilitiesTest { ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); - ActionPlan__c ap = testutil.createNewActionPlan('account', 0); + ActionPlan__c ap = testutil.createNewActionPlan('account', 0, null); ActionPlanCreationController apcc = new ActionPlanCreationController(new ApexPages.StandardController(ap)); Id recId = apcc.relatedObjectId(); - Assert.isTrue(ap.Account__c == recId); + Assert.areEqual(ap.Account__c, recId, 'Related record Id did not populate correctly'); - ap = testutil.createNewActionPlan('contact', 0); + ap = testutil.createNewActionPlan('contact', 0, null); apcc = new ActionPlanCreationController(new ApexPages.StandardController(ap)); recId = apcc.relatedObjectId(); - Assert.isTrue(ap.Contact__c == recId); + Assert.areEqual(ap.Contact__c, recId, 'Related record Id did not populate correctly'); - ap = testutil.createNewActionPlan('lead', 0); + ap = testutil.createNewActionPlan('lead', 0, null); apcc = new ActionPlanCreationController(new ApexPages.StandardController(ap)); recId = apcc.relatedObjectId(); - Assert.isTrue(ap.Lead__c == recId); + Assert.areEqual(ap.Lead__c, recId, 'Related record Id did not populate correctly'); - ap = testutil.createNewActionPlan('opportunity', 0); + ap = testutil.createNewActionPlan('opportunity', 0, null); apcc = new ActionPlanCreationController(new ApexPages.StandardController(ap)); recId = apcc.relatedObjectId(); - Assert.isTrue(ap.Opportunity__c == recId); + Assert.areEqual(ap.Opportunity__c, recId, 'Related record Id did not populate correctly'); } @IsTest @@ -253,8 +256,8 @@ private class ActionPlansUtilitiesTest { System.runAs(new User(Id = UserInfo.getUserId())) { testutil.assignAPPermissionSets(UserInfo.getUserId(), false); } - ActionPlan__c ap = testutil.createNewActionPlan('account', 0); - ActionPlan__c ap2 = testutil.createNewActionPlan('account', 0); + ActionPlan__c ap = testutil.createNewActionPlan('account', 0, null); + ActionPlan__c ap2 = testutil.createNewActionPlan('account', 0, null); List lAp = new List(); lAp.add(ap); lAp.add(ap2); @@ -270,19 +273,24 @@ private class ActionPlansUtilitiesTest { Test.stopTest(); List lAp2 = [SELECT Id FROM ActionPlan__c WHERE Id IN :lAp]; - Assert.isTrue(lAp2.size() == 1); + Assert.isTrue(lAp2.size() == 1, 'We should have only one Action Plan referenced'); if (!ActionPlansUtilities.getIsLex()) { - Assert.areEqual(page.getUrl(), url); + Assert.areEqual(page.getUrl(), url, 'URL was not set to desired value: ' + url); } } + /** + * A method to enable testing creating a Chatter post for any of our usual standard objects + * + * @param objectNames The object we want to make a post for + */ private static void doChatterPost(List objectNames) { Action_Plans_Settings__c aps = Action_Plans_Settings__c.getInstance(); if (!aps.Chatter_Object_Brag__c) { aps.Chatter_Object_Brag__c = true; update aps; } - Assert.isTrue(aps.Chatter_Object_Brag__c); + Assert.isTrue(aps.Chatter_Object_Brag__c, 'Failed to set up custom setting correctly'); ActionPlansTestUtilities testutil = new ActionPlansTestUtilities(); @@ -342,7 +350,7 @@ private class ActionPlansUtilitiesTest { apcc.actionPlan.SkipDay__c = 'End of previous week'; apcc.getTasks(); - Assert.isFalse(apcc.getTasks().isEmpty()); + Assert.isFalse(apcc.getTasks().isEmpty(), 'Failed to generate our APTaskWrapper records'); apcc.save(); } @@ -355,20 +363,20 @@ private class ActionPlansUtilitiesTest { List objectNames = new List{ 'account', 'lead', 'contact' }; doChatterPost(objectNames); System.debug([SELECT Id, Account__c, Lead__c, Contact__c, Action_Plan_Template__r.Name FROM ActionPlan__c]); - Assert.areEqual(objectNames.size(), [SELECT COUNT() FROM ActionPlan__c]); + Assert.areEqual(objectNames.size(), [SELECT COUNT() FROM ActionPlan__c], 'Failed to make one Action Plan per SObject'); } @IsTest private static void doChatterPostPart2() { List objectNames = new List{ 'contract', 'case', 'campaign', 'opportunity' }; doChatterPost(objectNames); - Assert.areEqual(objectNames.size(), [SELECT COUNT() FROM ActionPlan__c]); + Assert.areEqual(objectNames.size(), [SELECT COUNT() FROM ActionPlan__c], 'Failed to make one Action Plan per SObject'); } @IsTest private static void randomWord() { ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); - Assert.isTrue(testUtil.createRandomWord('testword') != testUtil.createRandomWord()); + Assert.areNotEqual(testUtil.createRandomWord('testword'), testUtil.createRandomWord(), 'We cannot ensure randomness. This is a problem.'); } @IsTest @@ -382,9 +390,9 @@ private class ActionPlansUtilitiesTest { Assert.areNotEqual(ActionPlansUtilities.getDefaultTaskRecordTypeId(), t.get('RecordTypeId'), 'Record Type is default'); } } - Assert.areNotEqual(0, ActionPlansUtilities.getTaskRTPicklistValues().size()); + Assert.isFalse(ActionPlansUtilities.getTaskRTPicklistValues().isEmpty(), 'We didn\'t collect all Record Types!'); } else { - Assert.areEqual(0, ActionPlansUtilities.getTaskRTPicklistValues().size()); + Assert.isTrue(ActionPlansUtilities.getTaskRTPicklistValues().isEmpty(), 'Why did we collect a Record Type for an object that does not use them?'); } } From 42e8024ad67d71206a3f36f169dc8b6bc3b46505 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 22 Feb 2023 21:00:18 -0800 Subject: [PATCH 21/70] ci(codecov): add token to upload --- .github/workflows/pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 98448b7c..15ba67c2 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -95,6 +95,7 @@ jobs: uses: codecov/codecov-action@v3 with: flags: Apex + token: ${{ secrets.CODECOV_TOKEN }} # Housekeeping - name: 'Delete scratch org' From 99d78d5a3302b6881a99d01c370c3c6e7cc523f4 Mon Sep 17 00:00:00 2001 From: David Schach Date: Thu, 23 Feb 2023 16:03:56 -0800 Subject: [PATCH 22/70] build: move tests folder into classes --- apexdox.yml | 4 +- doc-assets/ApexDoxSetup.sh | 2 +- doc-assets/INSTALLATION.html | 23 ++-- doc-assets/README.html | 9 +- {scripts => doc-assets}/updateHighlight.sh | 0 docs/ActionPlanCreateInvocable.html | 2 +- docs/ActionPlanCreateInvocableTest.html | 41 +++---- docs/ActionPlanCreationController.html | 2 +- docs/ActionPlanCreationControllerTest.html | 59 +++++----- docs/ActionPlanCreationTaskWrapperTest.html | 20 ++-- docs/ActionPlanDetailController.html | 2 +- docs/ActionPlanDetailControllerTest.html | 22 ++-- docs/ActionPlanTemplateCreationCntrlTest.html | 42 ++++---- .../ActionPlanTemplateCreationController.html | 2 +- docs/ActionPlanTemplateDetailCntrlTest.html | 20 ++-- docs/ActionPlanTemplateDetailController.html | 4 +- docs/ActionPlanTemplateExport.html | 2 +- docs/ActionPlanTemplateExportTest.html | 11 +- docs/ActionPlanTemplateImport.html | 2 +- docs/ActionPlanTemplateImportCntrlTest.html | 39 +++---- docs/ActionPlanTemplateImportController.html | 2 +- docs/ActionPlansBuilderUtilities.html | 2 +- docs/ActionPlansCreateMultipleAPsExtTest.html | 13 ++- ...ActionPlansCreateMultipleAPsExtension.html | 2 +- docs/ActionPlansDeleteMultipleAPExtTest.html | 14 +-- .../ActionPlansDeleteMultipleAPExtension.html | 2 +- docs/ActionPlansObjectTriggersTest.html | 28 ++--- docs/ActionPlansPostInstallScript.html | 2 +- docs/ActionPlansPostInstallScriptTest.html | 7 +- docs/ActionPlansQueueableBuilder.html | 2 +- docs/ActionPlansQueueableBuilderTest.html | 15 ++- docs/ActionPlansRedirect.html | 2 +- docs/ActionPlansRedirectTest.html | 17 +-- docs/ActionPlansSectionHeaderController.html | 2 +- ...ctionPlansSectionHeaderControllerTest.html | 14 +-- docs/ActionPlansTaskTriggerUtilities.html | 2 +- docs/ActionPlansTaskTriggerUtilitiesTest.html | 26 ++--- docs/ActionPlansTestUtilities.html | 101 ++++++++++-------- docs/ActionPlansTriggerHandlers.html | 2 +- docs/ActionPlansUtilities.html | 2 +- docs/ActionPlansUtilitiesTest.html | 73 ++++++++----- docs/CanTheUser.html | 2 +- docs/CanTheUserTest.html | 36 +++---- docs/assets/INSTALLATION.html | 23 ++-- docs/assets/search-idx.js | 24 ++--- docs/index.html | 13 ++- .../tests/ActionPlanCreateInvocableTest.cls | 0 ...ActionPlanCreateInvocableTest.cls-meta.xml | 0 .../ActionPlanCreationControllerTest.cls | 0 ...ionPlanCreationControllerTest.cls-meta.xml | 0 .../ActionPlanCreationTaskWrapperTest.cls | 0 ...onPlanCreationTaskWrapperTest.cls-meta.xml | 0 .../tests/ActionPlanDetailControllerTest.cls | 0 ...ctionPlanDetailControllerTest.cls-meta.xml | 0 .../ActionPlanTemplateCreationCntrlTest.cls | 0 ...PlanTemplateCreationCntrlTest.cls-meta.xml | 0 .../ActionPlanTemplateDetailCntrlTest.cls | 0 ...onPlanTemplateDetailCntrlTest.cls-meta.xml | 0 .../tests/ActionPlanTemplateExportTest.cls | 0 .../ActionPlanTemplateExportTest.cls-meta.xml | 0 .../ActionPlanTemplateImportCntrlTest.cls | 0 ...onPlanTemplateImportCntrlTest.cls-meta.xml | 0 .../ActionPlansCreateMultipleAPsExtTest.cls | 0 ...PlansCreateMultipleAPsExtTest.cls-meta.xml | 0 .../ActionPlansDeleteMultipleAPExtTest.cls | 0 ...nPlansDeleteMultipleAPExtTest.cls-meta.xml | 0 .../tests/ActionPlansObjectTriggersTest.cls | 0 ...ActionPlansObjectTriggersTest.cls-meta.xml | 0 .../ActionPlansPostInstallScriptTest.cls | 0 ...ionPlansPostInstallScriptTest.cls-meta.xml | 0 .../tests/ActionPlansQueueableBuilderTest.cls | 0 ...tionPlansQueueableBuilderTest.cls-meta.xml | 0 .../tests/ActionPlansRedirectTest.cls | 0 .../ActionPlansRedirectTest.cls-meta.xml | 0 ...ActionPlansSectionHeaderControllerTest.cls | 0 ...nsSectionHeaderControllerTest.cls-meta.xml | 0 .../ActionPlansTaskTriggerUtilitiesTest.cls | 0 ...PlansTaskTriggerUtilitiesTest.cls-meta.xml | 0 .../tests/ActionPlansUtilitiesTest.cls | 0 .../ActionPlansUtilitiesTest.cls-meta.xml | 0 .../{ => classes}/tests/CanTheUserTest.cls | 0 .../tests/CanTheUserTest.cls-meta.xml | 0 82 files changed, 398 insertions(+), 338 deletions(-) rename {scripts => doc-assets}/updateHighlight.sh (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanCreateInvocableTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanCreateInvocableTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanCreationControllerTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanCreationControllerTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanCreationTaskWrapperTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanDetailControllerTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanDetailControllerTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanTemplateCreationCntrlTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanTemplateDetailCntrlTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanTemplateExportTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanTemplateExportTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanTemplateImportCntrlTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansCreateMultipleAPsExtTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansDeleteMultipleAPExtTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansObjectTriggersTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansObjectTriggersTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansPostInstallScriptTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansPostInstallScriptTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansQueueableBuilderTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansQueueableBuilderTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansRedirectTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansRedirectTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansSectionHeaderControllerTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansTaskTriggerUtilitiesTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansUtilitiesTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/ActionPlansUtilitiesTest.cls-meta.xml (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/CanTheUserTest.cls (100%) rename sfdx-source/LabsActionPlans/main/default/{ => classes}/tests/CanTheUserTest.cls-meta.xml (100%) diff --git a/apexdox.yml b/apexdox.yml index 35acedb0..0fb73daa 100644 --- a/apexdox.yml +++ b/apexdox.yml @@ -2,8 +2,8 @@ engine: source: - path: '${workspaceFolder}/sfdx-source/LabsActionPlans/main/default/classes' sourceUrl: https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes - - path: '${workspaceFolder}/sfdx-source/LabsActionPlans/main/default/tests' - sourceUrl: https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests + - path: '${workspaceFolder}/sfdx-source/LabsActionPlans/main/default/classes/tests' + sourceUrl: https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests targetDirectory: '${workspaceFolder}/docs' #excludes: # - "*Test.cls" diff --git a/doc-assets/ApexDoxSetup.sh b/doc-assets/ApexDoxSetup.sh index 7ed1d223..c1c3663c 100644 --- a/doc-assets/ApexDoxSetup.sh +++ b/doc-assets/ApexDoxSetup.sh @@ -14,4 +14,4 @@ npx marked -i INSTALLATION.md --breaks >> "doc-assets/INSTALLATION.html" sed -i '' 's|https://github.com/SalesforceLabs/ActionPlansV4/blob/main/INSTALLATION.md|assets/INSTALLATION.html|g' docs/index.html -npm run updateHighlight \ No newline at end of file +. doc-assets/updateHighlight.sh \ No newline at end of file diff --git a/doc-assets/INSTALLATION.html b/doc-assets/INSTALLATION.html index 358e78fc..5a4aee37 100644 --- a/doc-assets/INSTALLATION.html +++ b/doc-assets/INSTALLATION.html @@ -52,7 +52,7 @@

      register a My Domain. Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first.

      +
    • If you are setting up a Developer Edition: go to Setup, and under My Domain, register a My Domain. Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first.

    • To run all the next steps at once, run this command in the terminal:

      . scripts/unmanaged.sh
      @@ -61,17 +61,19 @@ 

      Load sample metadata (see below)

      +
      sf deploy metadata  --source-dir sfdx-source/unmanaged
      +

    • If your org isn't already open, open it now:

      -
      sfdx force:org:open -u myorg
      +
      sf org open --target-org myorg
       
    • @@ -81,7 +83,7 @@

      Optional Installation Instructions

      This repository contains several files that are relevant if you want to add sample data, or integrate modern web development tooling to your Salesforce development processes or to your continuous integration/continuous deployment processes.

      -

      Data Import (Optional - NOT available if using the AppExchange managed package)

      +

      Data/Metadata Import (Optional - NOT available if using the AppExchange managed package)

      • This repository creates sample data (Accounts, Contacts, Leads) if you choose to create a scratch org. To prevent this, go to the scratch org definition and change hasSampleData to false.

        "hasSampleData": false,
        @@ -98,15 +100,15 @@ 
        +

        Data/Metadata Import (Optional - ONLY if using the AppExchange managed package)

        • When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following:

          sfdx force:apex:execute -f ./data/sample-data-managed.apex
          @@ -119,16 +121,17 @@ 

          Da
        • a sample Task layout
        • a sample report on open Action Plan-related Tasks
        -
        sfdx force:source:deploy -p sfdx-source/unmanagedExtension --tracksource
        +
        sf deploy metadata  --source-dir sfdx-source/unmanagedExtension
         
      • You can also create other sample Account and Contact records by running the following command:

        -
        sfdx force:data:tree:import -p ./data/action-plan-data-plan.json 
        +
        sf data import tree --plan ./data/action-plan-data-plan.json 
         

      Code formatting

      Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the Prettier formatter.

      +

      Prettier Apex is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow these instructions from the Salesforce Extensions site.

      Code linting

      ESLint is a popular JavaScript linting tool used to identify stylistic errors and erroneous constructs. To use ESLint with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .eslintignore file is provided as part of this repository to exclude specific files from the linting process in the context of Lightning Web Components development.

      Pre-commit hook

      diff --git a/doc-assets/README.html b/doc-assets/README.html index 59deff9a..4d50d0da 100644 --- a/doc-assets/README.html +++ b/doc-assets/README.html @@ -116,17 +116,20 @@

      To Start Using an Object wit
    • Add the field to the Related Objects fieldset on Action Plan.
    • The related object will now be available for selection when creating a new Action Plan and relating it to an object.
    • -
    • Add the following code to the object trigger in before delete and after undelete contexts (removing the LabsActionPlans namespace if you're not using the managed package):
      LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'Custom_Object__c' );
      +
    • Add the following code to the object trigger in before delete and after undelete contexts (removing the LabsActionPlans namespace if you're not using the managed package):
      LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' );
       
      -
    • +
    • +

      +

      Test Code for Additional Objects

      +

      Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage (not a best-practice!) just make a test method inserting and then deleting a record.
      Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet.

      Adding a New Custom Object Action Plan button to the Action Plan object

      While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template. (Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout:

      1. Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link
      2. Give it a label and name, such as "New MyObject Action Plan"
      3. Display Type is List Button. Uncheck the list checkbox.
      4. -
      5. Use the following format for the button (removing the LabsActionPlans namespace if you're not using the managed package):
        {!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType="CustomObject__c", refId=CustomObject__c.Id] )}
        +
      6. Use the following format for the button (removing the LabsActionPlans__ namespace if you're not using the managed package):
        {!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType="CustomObject__c", refId=CustomObject__c.Id] )}
         
      diff --git a/scripts/updateHighlight.sh b/doc-assets/updateHighlight.sh similarity index 100% rename from scripts/updateHighlight.sh rename to doc-assets/updateHighlight.sh diff --git a/docs/ActionPlanCreateInvocable.html b/docs/ActionPlanCreateInvocable.html index fb31472f..be616800 100644 --- a/docs/ActionPlanCreateInvocable.html +++ b/docs/ActionPlanCreateInvocable.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L25"> ActionPlanCreateInvocableTest
    • @@ -347,14 +347,15 @@

      -
      Since
      -
      -
    • 2022
    • -
      Author
      +
      Since
      +
      +
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • +

      ActionPlanCreateInvocableTest Properties

      @@ -370,7 +371,7 @@

      ActionPlanCreateInvocableTest Properties rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L27"> BULK_COUNT @@ -385,7 +386,7 @@

      ActionPlanCreateInvocableTest Properties rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L26"> TASK_COUNT @@ -449,7 +450,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L327"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L329"> bogusTemplateName()

      @@ -464,7 +465,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L225"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L227"> bulkAccounts()

      @@ -479,7 +480,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L259"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L261"> checkWeekendDueDate()

      @@ -494,7 +495,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L28"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L30"> relatedAccount()

      @@ -509,7 +510,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L159"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L161"> relatedCampaign()

      @@ -524,7 +525,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L181"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L183"> relatedCase()

      @@ -539,7 +540,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L70"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L72"> relatedContact()

      @@ -554,7 +555,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L203"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L205"> relatedContract()

      @@ -569,7 +570,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L112"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L114"> relatedLead()

      @@ -584,7 +585,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L137"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L139"> relatedOpportunity()

      @@ -599,7 +600,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L377"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L379"> setupRequest(templateId, relatedID, daysToActionPlanStart)

      @@ -635,7 +636,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls#L395"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L397"> setupRequest(templateId, relatedID, daysToActionPlanStart, actionPlanName)

      diff --git a/docs/ActionPlanCreationController.html b/docs/ActionPlanCreationController.html index a3a43cf8..f43b7b20 100644 --- a/docs/ActionPlanCreationController.html +++ b/docs/ActionPlanCreationController.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L24"> ActionPlanCreationControllerTest
    • @@ -351,6 +351,11 @@

      +
      Since
      +
      +
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • +

      ActionPlanCreationControllerTest Methods

      @@ -439,7 +444,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L168"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L171"> actionPlanSave()

      @@ -454,7 +459,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L248"> actionPlanSaveAndMakeDependent()

      @@ -469,7 +474,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L214"> actionPlanSaveAndNew()

      @@ -484,7 +489,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L380"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L382"> addNewTask()

      @@ -499,7 +504,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L421"> changeAPTaskOwner()

      @@ -514,7 +519,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L476"> checkActionPlanTaskList()

      @@ -529,7 +534,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L326"> checkCompletedTasks()

      @@ -544,7 +549,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L778"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L779"> checkMaxTasks()

      @@ -559,7 +564,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L796"> checkMaxTasksError()

      @@ -574,7 +579,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L627"> checkReferredObject()

      @@ -589,7 +594,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L494"> checkSubjectItems()

      @@ -604,7 +609,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L114"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L116"> constructorTests()

      @@ -619,7 +624,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L581"> cyclicDependencyTasksFail()

      @@ -634,7 +639,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L540"> cyclicDependencyTaskSuccess()

      @@ -649,7 +654,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L755"> forceNoRecordTypes()

      @@ -664,7 +669,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L737"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L738"> forceRecordTypes()

      @@ -679,7 +684,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L354"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L356"> longNameTasks()

      @@ -694,7 +699,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L26"> makeData()

      @@ -709,7 +714,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L103"> newAPWithoutTasks()

      @@ -724,7 +729,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L273"> relateToMultipleContacts()

      @@ -739,7 +744,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L453"> removeActionPlanTask()

      @@ -754,7 +759,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L82"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L84"> saveAndDelete()

      @@ -769,7 +774,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls#L57"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L59"> saveAndView()

      @@ -784,7 +789,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L702"> setTaskRecordType()

      @@ -799,7 +804,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L38"> singleRecordConstructor()

      diff --git a/docs/ActionPlanCreationTaskWrapperTest.html b/docs/ActionPlanCreationTaskWrapperTest.html index 6a356e18..734325af 100644 --- a/docs/ActionPlanCreationTaskWrapperTest.html +++ b/docs/ActionPlanCreationTaskWrapperTest.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L24"> ActionPlanCreationTaskWrapperTest
    • @@ -396,7 +396,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L41"> checkActionPlanTaskList()

      @@ -411,7 +411,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L137"> doEditActionPlan()

      @@ -426,7 +426,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L62"> doTemplateCreateEdit()

      @@ -441,7 +441,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L157"> editActionPlanAssignByDefault()

      @@ -456,7 +456,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L171"> editActionPlanNOTAssignByDefault()

      @@ -471,7 +471,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L29"> makeData()

      @@ -487,7 +487,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L107"> makeFromTemplateAssignByDefault()

      @@ -502,7 +502,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L119"> makeFromTemplateNOTAssignByDefault()

      diff --git a/docs/ActionPlanDetailController.html b/docs/ActionPlanDetailController.html index 00ad1c65..83ca7160 100644 --- a/docs/ActionPlanDetailController.html +++ b/docs/ActionPlanDetailController.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L22"> ActionPlanDetailControllerTest
    • @@ -391,7 +391,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L106"> checkActionPlanTemplateVersion()

      @@ -406,7 +406,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L140"> checkDeleteActionPlan()

      @@ -421,7 +421,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L88"> checkDependentTasks()

      @@ -436,7 +436,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L161"> checkGetRelatedRecordName()

      @@ -451,7 +451,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls#L70"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L70"> checkNoTasks()

      @@ -466,7 +466,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls#L52"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L52"> checkTasks()

      @@ -481,7 +481,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L24"> constructorTests()

      @@ -496,7 +496,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls#L233"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L233"> forceNoRecordType()

      @@ -511,7 +511,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls#L212"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L212"> forceRecordType()

      diff --git a/docs/ActionPlanTemplateCreationCntrlTest.html b/docs/ActionPlanTemplateCreationCntrlTest.html index 5f16406a..892c585f 100644 --- a/docs/ActionPlanTemplateCreationCntrlTest.html +++ b/docs/ActionPlanTemplateCreationCntrlTest.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L22"> ActionPlanTemplateCreationCntrlTest @@ -363,7 +363,7 @@

      ActionPlanTemplateCreationCntrlTest Prop rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L23"> TEMPLATE_TASKS_COUNT @@ -439,7 +439,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L234"> addNewActionPlanTemplateTask()

      @@ -454,7 +454,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L214"> addTemplateTask()

      @@ -469,7 +469,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls#L125"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L125"> cancel()

      @@ -484,7 +484,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L197"> checkMaxTasksError()

      @@ -499,7 +499,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L371"> checkTemplateSubjectItem()

      @@ -514,7 +514,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L350"> checkTemplateTaskSize()

      @@ -529,7 +529,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L26"> contructor()

      @@ -544,7 +544,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L389"> cyclicDependencyFail()

      @@ -559,7 +559,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L467"> cyclicDependencySuccess()

      @@ -574,7 +574,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L179"> forceNoRecordType()

      @@ -589,7 +589,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L437"> itselfCyclicDependencyFail()

      @@ -604,7 +604,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L323"> longNameTemplateTasks()

      @@ -619,7 +619,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L260"> removeTemplateTask()

      @@ -634,7 +634,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L279"> removingActionPlanTemplateTask()

      @@ -649,7 +649,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L305"> retrievingTemplateTasks()

      @@ -664,7 +664,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls#L57"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L57"> save()

      @@ -679,7 +679,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls#L86"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L86"> saveTemplate()

      @@ -694,7 +694,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L146"> setTaskRecordType()

      diff --git a/docs/ActionPlanTemplateCreationController.html b/docs/ActionPlanTemplateCreationController.html index caab4514..402dbca7 100644 --- a/docs/ActionPlanTemplateCreationController.html +++ b/docs/ActionPlanTemplateCreationController.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest
    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L23"> ActionPlanTemplateDetailCntrlTest @@ -392,7 +392,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls#L103"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L103"> checkNoTasks()

      @@ -407,7 +407,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L25"> constructor()

      @@ -422,7 +422,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L121"> deleteActionPlanTemplate()

      @@ -437,7 +437,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls#L186"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L187"> exportTest()

      @@ -452,7 +452,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L82"> forceNoRecordType()

      @@ -467,7 +467,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls#L60"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L60"> forceRecordType()

      @@ -482,7 +482,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L165"> retrievingActionPlanTemplate()

      @@ -497,7 +497,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L142"> retrievingTemplateTasks()

      diff --git a/docs/ActionPlanTemplateDetailController.html b/docs/ActionPlanTemplateDetailController.html index c583b8e3..1cb1be4a 100644 --- a/docs/ActionPlanTemplateDetailController.html +++ b/docs/ActionPlanTemplateDetailController.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest
    • -
    • ActionPlanTemplateDetailController Prope - The Id of the Action Plan for Exporting. Shown on the Export page that shares thsi controller + The Id of the Action Plan for Exporting. Shown on the Export page that shares this controller diff --git a/docs/ActionPlanTemplateExport.html b/docs/ActionPlanTemplateExport.html index 69c4e77c..e1722a04 100644 --- a/docs/ActionPlanTemplateExport.html +++ b/docs/ActionPlanTemplateExport.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest
    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L25"> ActionPlanTemplateExportTest @@ -355,6 +355,7 @@

      Since
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • @@ -378,7 +379,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls#L41"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L42"> exportDocTest()

      @@ -393,7 +394,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls#L58"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L59"> exportFileTest()

      @@ -408,7 +409,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L27"> exportTest()

      diff --git a/docs/ActionPlanTemplateImport.html b/docs/ActionPlanTemplateImport.html index e1da89de..72d691ed 100644 --- a/docs/ActionPlanTemplateImport.html +++ b/docs/ActionPlanTemplateImport.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest

    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L25"> ActionPlanTemplateImportCntrlTest @@ -354,6 +354,7 @@

      Since
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • @@ -370,7 +371,7 @@

      ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L26"> xmlImport @@ -385,7 +386,7 @@

      ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L30"> xmlImportEmptyMetaData @@ -400,7 +401,7 @@

      ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L30"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L31"> xmlImportFromExport @@ -415,7 +416,7 @@

      ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L28"> xmlImportWrongAPTask @@ -430,7 +431,7 @@

      ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L27"> xmlImportWrongAPTemplate @@ -445,7 +446,7 @@

      ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L28"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L29"> xmlImportWrongMetaData @@ -460,7 +461,7 @@

      ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L31"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L32"> xmlWithControllingTasks @@ -512,7 +513,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L131"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L132"> badFields()

      @@ -527,7 +528,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L155"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L156"> controllingTask()

      @@ -542,7 +543,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L169"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L170"> roundTrip()

      @@ -557,7 +558,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls#L34"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L35"> xMLImport()

      @@ -572,7 +573,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L49"> xMLImportEmptyAttachment()

      @@ -587,7 +588,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L62"> xMLImportEmptyXML()

      @@ -602,7 +603,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L118"> xMLImportFromExport()

      @@ -617,7 +618,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L104"> xMLImportWrongMetaData()

      @@ -632,7 +633,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L76"> xMLImportWrongTemplate()

      @@ -647,7 +648,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L90"> xMLImportWrongTemplateTask()

      diff --git a/docs/ActionPlanTemplateImportController.html b/docs/ActionPlanTemplateImportController.html index bbc35686..f2aa4e72 100644 --- a/docs/ActionPlanTemplateImportController.html +++ b/docs/ActionPlanTemplateImportController.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest

    • -
    • ActionPlansQueueableBuilderTest
    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls#L24"> ActionPlansCreateMultipleAPsExtTest @@ -353,6 +353,11 @@

      +
      Since
      +
      +
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • +

      ActionPlansCreateMultipleAPsExtTest Methods

      @@ -372,7 +377,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls#L49"> givenNoRecordsToCreateThenNotCreated()

      @@ -387,7 +392,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls#L26"> givenRecordsToCreateThenCreated()

      diff --git a/docs/ActionPlansCreateMultipleAPsExtension.html b/docs/ActionPlansCreateMultipleAPsExtension.html index 72bd33ce..c80ba4c1 100644 --- a/docs/ActionPlansCreateMultipleAPsExtension.html +++ b/docs/ActionPlansCreateMultipleAPsExtension.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest

    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L21"> ActionPlansDeleteMultipleAPExtTest @@ -365,7 +365,7 @@

      ActionPlansDeleteMultipleAPExtTest Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L22"> APS_TO_CREATE @@ -399,7 +399,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L25"> datasetup()

      @@ -414,7 +414,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L73"> givenNoRecordsToDeleteThenNotDeleted()

      @@ -429,7 +429,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L59"> givenRecordsToDeleteThenDeleted()

      @@ -444,7 +444,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L89"> noDeletePermission()

      diff --git a/docs/ActionPlansDeleteMultipleAPExtension.html b/docs/ActionPlansDeleteMultipleAPExtension.html index 6dcebe20..62e46043 100644 --- a/docs/ActionPlansDeleteMultipleAPExtension.html +++ b/docs/ActionPlansDeleteMultipleAPExtension.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest
    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L22"> ActionPlansObjectTriggersTest @@ -366,7 +366,7 @@

      ActionPlansObjectTriggersTest Properties rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L23"> aps @@ -421,7 +421,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L38"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L38"> accountTrigger()

      @@ -436,7 +436,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L71"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L73"> campaignTrigger()

      @@ -451,7 +451,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L105"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L109"> caseTrigger()

      @@ -466,7 +466,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L139"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L145"> contactTrigger()

      @@ -481,7 +481,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L173"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L181"> contractTrigger()

      @@ -496,7 +496,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L328"> leadConversionAccount()

      @@ -511,7 +511,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L289"> leadConversionContact()

      @@ -526,7 +526,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L374"> leadConversionOpportunity()

      @@ -541,7 +541,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L207"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L217"> leadTrigger()

      @@ -556,7 +556,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L26"> makeData()

      @@ -571,7 +571,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls#L241"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L253"> opportunityTrigger()

      diff --git a/docs/ActionPlansPostInstallScript.html b/docs/ActionPlansPostInstallScript.html index b4c6d6db..de8ea04e 100644 --- a/docs/ActionPlansPostInstallScript.html +++ b/docs/ActionPlansPostInstallScript.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest
    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls#L19"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls#L20"> ActionPlansPostInstallScriptTest @@ -354,6 +354,7 @@

      Since
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • @@ -371,7 +372,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls#L22"> installScript()

      diff --git a/docs/ActionPlansQueueableBuilder.html b/docs/ActionPlansQueueableBuilder.html index d9ecd90d..5ba417f8 100644 --- a/docs/ActionPlansQueueableBuilder.html +++ b/docs/ActionPlansQueueableBuilder.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest

    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L24"> ActionPlansQueueableBuilderTest @@ -351,6 +351,11 @@

      +
      Since
      +
      +
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • +

      ActionPlansQueueableBuilderTest Methods

      @@ -373,7 +378,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L26"> makeData()

      @@ -388,7 +393,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls#L35"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L37"> runQueueContact()

      @@ -403,7 +408,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls#L88"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L90"> runQueueException()

      diff --git a/docs/ActionPlansRedirect.html b/docs/ActionPlansRedirect.html index 651a2cc2..1945978d 100644 --- a/docs/ActionPlansRedirect.html +++ b/docs/ActionPlansRedirect.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest

    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls#L19"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L20"> ActionPlansRedirectTest @@ -342,7 +342,7 @@

      Test for Redirect Visualforce Controller
      Signature
      @IsTest
      -
      public class ActionPlansRedirectTest
      +
      private class ActionPlansRedirectTest
      See
      ActionPlansRedirect @@ -354,6 +354,7 @@

      Since
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • @@ -383,7 +384,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls#L65"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L66"> actionPlanChangeOwner()

      @@ -398,7 +399,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L82"> actionPlanTemplateChangeOwner()

      @@ -413,7 +414,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls#L31"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L32"> aPTaskRedirect()

      @@ -428,7 +429,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls#L48"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L49"> aPTTaskRedirect()

      @@ -443,7 +444,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L22"> makeData()

      diff --git a/docs/ActionPlansSectionHeaderController.html b/docs/ActionPlansSectionHeaderController.html index 9cd922a5..07234bfe 100644 --- a/docs/ActionPlansSectionHeaderController.html +++ b/docs/ActionPlansSectionHeaderController.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest

    • -
    • ActionPlansQueueableBuilderTest
    • -
    • + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L19"> ActionPlansSectionHeaderControllerTest @@ -383,7 +383,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L21"> makeData()

      @@ -398,7 +398,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls#L76"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L76"> nullObject()

      @@ -413,7 +413,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L45"> objectTabDescribeNegative()

      @@ -428,7 +428,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L64"> objectTabDescribeNotInApplication()

      @@ -443,7 +443,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L28"> objectTabDescribePositive()

      diff --git a/docs/ActionPlansTaskTriggerUtilities.html b/docs/ActionPlansTaskTriggerUtilities.html index fa959e25..8b1ca8e8 100644 --- a/docs/ActionPlansTaskTriggerUtilities.html +++ b/docs/ActionPlansTaskTriggerUtilities.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest
    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L23"> ActionPlansTaskTriggerUtilitiesTest @@ -370,7 +370,7 @@

      ActionPlansTaskTriggerUtilitiesTest Prop rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L24"> testClosedStatus @@ -443,7 +443,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L114"> actionPlanDelete()

      @@ -459,7 +459,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L229"> aPTaskUndelete()

      @@ -475,7 +475,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L168"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L168"> aPTaskUpdate()

      @@ -491,7 +491,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L298"> aPTTemplateUndeleteException()

      @@ -507,7 +507,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L38"> coverFutureMethods()

      @@ -523,7 +523,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L27"> makeData()

      @@ -538,7 +538,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L55"> taskAfterUpdateToCompleted()

      @@ -554,7 +554,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L348"> taskAfterUpdateToOpen()

      @@ -570,7 +570,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L477"> taskAssignToQueue()

      @@ -589,7 +589,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L405"> taskBeforeDelete()

      diff --git a/docs/ActionPlansTestUtilities.html b/docs/ActionPlansTestUtilities.html index 19e5369b..7f1e006f 100644 --- a/docs/ActionPlansTestUtilities.html +++ b/docs/ActionPlansTestUtilities.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L23"> ActionPlansTestUtilities @@ -350,6 +350,7 @@

      Since
    • 2022
    • +
    • 2023 Begin exposing methods to cover custom objects
    • @@ -368,7 +369,7 @@

      ActionPlansTestUtilities Properties

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L27"> forceError @@ -386,7 +387,7 @@

      ActionPlansTestUtilities Properties

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L31"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L32"> forceHasRecordType @@ -404,7 +405,7 @@

      ActionPlansTestUtilities Properties

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L37"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L38"> standardObjects @@ -444,7 +445,7 @@

      ActionPlansTestUtilities Methods

      Creates a new Account SObject
      Inserts before returning

    • - createNewActionPlan (relatedObject, numTasks) + createNewActionPlan (relatedObject, numTasks, customObjectId)
      Create Action Plan and APTaskss
    • @@ -475,7 +476,7 @@

      ActionPlansTestUtilities Methods

    • createNewCampaign () -
      Creates a new Campaign SObject Inserts before returning
      +
      Creates a new Campaign SObject
      Inserts before returning
    • createNewCase (insertRecord) @@ -485,7 +486,7 @@

      ActionPlansTestUtilities Methods

    • createNewCase () -
      Creates a new Case Object Inserts before returning
      +
      Creates a new Case Object
      Inserts before returning
    • createNewContact (insertRecord) @@ -495,7 +496,7 @@

      ActionPlansTestUtilities Methods

    • createNewContact () -
      Creates a new Contact Object Inserts before returning
      +
      Creates a new Contact Object
      Inserts before returning
    • createNewContract (insertRecord) @@ -505,7 +506,7 @@

      ActionPlansTestUtilities Methods

    • createNewContract () -
      Creates a new Contract Object Inserts before returning
      +
      Creates a new Contract Object
      Inserts before returning
    • createNewLead (insertRecord) @@ -515,7 +516,7 @@

      ActionPlansTestUtilities Methods

    • createNewLead () -
      Creates a new Lead Object Inserts before returning
      +
      Creates a new Lead Object
      Inserts before returning
    • createNewOpportunity (insertRecord) @@ -525,7 +526,7 @@

      ActionPlansTestUtilities Methods

    • createNewOpportunity () -
      Creates a new Opportunity Object Inserts before returning
      +
      Creates a new Opportunity Object
      Inserts before returning
    • createRandomWord () @@ -573,7 +574,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L118"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L119"> assignAPPermissionSets(testUserId, allOrNone)

      @@ -604,7 +605,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L105"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L106"> createAdminUser()

      @@ -631,7 +632,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L136"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L137"> createNewAccount(insertRecord)

      @@ -653,7 +654,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L151"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L152"> createNewAccount()

      @@ -671,14 +672,14 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L318"> - createNewActionPlan(relatedObject, numTasks) + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L325"> + createNewActionPlan(relatedObject, numTasks, customObjectId)

      Create Action Plan and APTaskss
      Signature
      -
      public ActionPlan__c createNewActionPlan(String relatedObject, Integer numTasks)
      +
      public ActionPlan__c createNewActionPlan(String relatedObject, Integer numTasks, Id customObjectId)
      Parameters
      relatedObject
      Type: String
      @@ -686,6 +687,9 @@

      numTasks
      Type: Integer
      How many tasks to create for the ActionPlan
      +
      customObjectId
      +
      Type: Id
      +
      For a Custom Object, pass in the Id of the created record so we don't have to do that here
      Returns
      new ActionPlan__c
      See
      @@ -694,6 +698,11 @@

      >ActionPlansTestUtilities.createNewActionPlanTask +
      Example
      +
       ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); 
      + ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3, null); 
      + or 
      + ActionPlan__c actionPlan = testUtil.createNewActionPlan('customObject__c', 3, '02a000000000000000');

      @@ -702,7 +711,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L379"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L389"> createNewActionPlanTask(actionPlan, days, userId, category, priority)

      @@ -740,7 +749,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L414"> createNewActionPlanTemplate(numTasks)

      @@ -772,7 +781,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L449"> createNewActionPlanTemplateTask(apTemplate, days, userId, category, priority)

      @@ -812,7 +821,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L161"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L162"> createNewCampaign(insertRecord)

      @@ -840,11 +849,11 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L177"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L178"> createNewCampaign()

      -
      Creates a new Campaign SObject Inserts before returning
      +
      Creates a new Campaign SObject
      Inserts before returning
      Signature
      public Campaign createNewCampaign()
      @@ -864,7 +873,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L186"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L187"> createNewCase(insertRecord)

      @@ -886,11 +895,11 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L202"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L203"> createNewCase()

      -
      Creates a new Case Object Inserts before returning
      +
      Creates a new Case Object
      Inserts before returning
      Signature
      public Case createNewCase()
      @@ -904,7 +913,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L211"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L212"> createNewContact(insertRecord)

      @@ -926,11 +935,11 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L226"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L227"> createNewContact()

      -
      Creates a new Contact Object Inserts before returning
      +
      Creates a new Contact Object
      Inserts before returning
      Signature
      public Contact createNewContact()
      @@ -944,7 +953,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L235"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L236"> createNewContract(insertRecord)

      @@ -966,11 +975,11 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L252"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L253"> createNewContract()

      -
      Creates a new Contract Object Inserts before returning
      +
      Creates a new Contract Object
      Inserts before returning
      Signature
      public Contract createNewContract()
      @@ -984,7 +993,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L261"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L262"> createNewLead(insertRecord)

      @@ -1006,11 +1015,11 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L279"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L280"> createNewLead()

      -
      Creates a new Lead Object Inserts before returning
      +
      Creates a new Lead Object
      Inserts before returning
      Signature
      public Lead createNewLead()
      @@ -1024,7 +1033,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L289"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L290"> createNewOpportunity(insertRecord)

      @@ -1052,11 +1061,11 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L307"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L308"> createNewOpportunity()

      -
      Creates a new Opportunity Object Inserts before returning
      +
      Creates a new Opportunity Object
      Inserts before returning
      Signature
      public Opportunity createNewOpportunity()
      @@ -1076,7 +1085,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L44"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L45"> createRandomWord()

      @@ -1096,7 +1105,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L55"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L56"> createRandomWord(prefix)

      @@ -1123,7 +1132,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L67"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L68"> createTestUser()

      @@ -1145,7 +1154,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L81"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L82"> createTestUser(p)

      @@ -1167,7 +1176,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L486"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L496"> getCompleted(actionPlanId)

      @@ -1189,7 +1198,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L472"> getNonDefaultAvailableTaskRecordType()

      diff --git a/docs/ActionPlansTriggerHandlers.html b/docs/ActionPlansTriggerHandlers.html index acd6d3d0..6ae118e2 100644 --- a/docs/ActionPlansTriggerHandlers.html +++ b/docs/ActionPlansTriggerHandlers.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest

    • -
    • ActionPlansQueueableBuilderTest
    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L18"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L19"> ActionPlansUtilitiesTest @@ -353,6 +353,7 @@

      Since
    • 2022
    • +
    • 2023 System.assert to Assert class + error messages
    • @@ -382,6 +383,8 @@

      ActionPlansUtilitiesTest Methods

    • doChatterPost (objectNames) + +
      A method to enable testing creating a Chatter post for any of our usual standard objects
    • doChatterPostPart1 () @@ -414,10 +417,13 @@

      ActionPlansUtilitiesTest Methods

    • saveSingle ()
    • -
    • - testObject (objectName) +
    • + testObject (objectName, recordId) -
      Pass in any object and create an Action Plan for that object
      +
      + Pass in any object name (and its ID if a custom object) and create an Action Plan for that object
      Will be global in the next version so test code for + custom objects can access it +
    • utilitiesRecordTypes () @@ -430,7 +436,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L94"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L95"> account()

      @@ -445,7 +451,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L127"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L128"> campaign()

      @@ -460,7 +466,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L169"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L172"> cancel()

      @@ -475,7 +481,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L122"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L123"> case()

      @@ -490,7 +496,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L104"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L105"> contact()

      @@ -505,7 +511,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L132"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L133"> contract()

      @@ -520,7 +526,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L251"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L254"> deleteActionPlans()

      @@ -535,13 +541,18 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L279"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L287"> doChatterPost(objectNames)

      +
      A method to enable testing creating a Chatter post for any of our usual standard objects
      Signature
      private static void doChatterPost(List<String> objectNames)
      +
      Parameters
      +
      objectNames
      +
      Type: List<String>
      +
      The object we want to make a post for

      @@ -550,7 +561,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L354"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L362"> doChatterPostPart1()

      @@ -565,7 +576,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L362"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L370"> doChatterPostPart2()

      @@ -580,7 +591,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L117"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L118"> lead()

      @@ -595,7 +606,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L397"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L405"> makeAppTask(ap)

      @@ -623,7 +634,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L20"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L21"> makeData()

      @@ -638,7 +649,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L369"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L377"> randomWord()

      @@ -653,7 +664,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L224"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L227"> relatedObjectId()

      @@ -668,7 +679,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L64"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L65"> saveMultiple()

      @@ -683,7 +694,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L32"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L33"> saveSingle()

      @@ -691,25 +702,31 @@

      @IsTest
      private static void saveSingle()

      -
      +

      - testObject(objectName) + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L145"> + testObject(objectName, recordId)

      -
      Pass in any object and create an Action Plan for that object
      +
      + Pass in any object name (and its ID if a custom object) and create an Action Plan for that object
      Will be global in the next version so test code for + custom objects can access it +
      Signature
      -
      private static Boolean testObject(String objectName)
      +
      public static Boolean testObject(String objectName, Id recordId)
      Parameters
      objectName
      Type: String
      The object name
      +
      recordId
      +
      Type: Id
      +
      Pass in the Id of a custom object record so we can make an Action Plan for it
      Returns
      Success at creating tasks for the Action Plan
      Author
      @@ -724,7 +741,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls#L375"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L383"> utilitiesRecordTypes()

      diff --git a/docs/CanTheUser.html b/docs/CanTheUser.html index 3708cda8..9c5adafa 100644 --- a/docs/CanTheUser.html +++ b/docs/CanTheUser.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest
    • -
    • ActionPlansQueueableBuilderTest
    • -
    • rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L16"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L16"> CanTheUserTest @@ -422,7 +422,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L29"> canCrudAccountCreatePositive()

      @@ -437,7 +437,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L84"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L84"> canCrudAccountDeletePositive()

      @@ -452,7 +452,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L51"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L51"> canCrudAccountReadPositive()

      @@ -467,7 +467,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L64"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L64"> canCrudAccountUpdatePositive()

      @@ -482,7 +482,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L41"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L41"> canCrudCreateAccountPositive()

      @@ -497,7 +497,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L91"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L91"> canCrudDestroyAccountPositive()

      @@ -512,7 +512,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L70"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L70"> canCrudEditAccountPositive()

      @@ -527,7 +527,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L57"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L57"> canCrudReadAccountPositive()

      @@ -542,7 +542,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L77"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L77"> canCrudUpsertAccountPositive()

      @@ -557,7 +557,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L20"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L20"> generateAccounts()

      @@ -572,7 +572,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L108"> getBulkFLSAccessibleWithAccountPositive()

      @@ -587,7 +587,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L117"> getBulkFLSAccessibleWithAccountPositiveWithNegativeResults()

      @@ -602,7 +602,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L126"> getBulkFLSUpdatableWithAccountPositive()

      @@ -617,7 +617,7 @@

      + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L135"> getBulkFLSUpdatableWithAccountPositiveWithNegativeResults()

      @@ -632,7 +632,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L103"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L103"> getFLSofAccountIDNegative()

      @@ -647,7 +647,7 @@

      rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls#L98"> + href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L98"> getFLSofAccountNamePositive()

      diff --git a/docs/assets/INSTALLATION.html b/docs/assets/INSTALLATION.html index 358e78fc..5a4aee37 100644 --- a/docs/assets/INSTALLATION.html +++ b/docs/assets/INSTALLATION.html @@ -52,7 +52,7 @@

      register a My Domain. Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first.

      +
    • If you are setting up a Developer Edition: go to Setup, and under My Domain, register a My Domain. Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first.

    • To run all the next steps at once, run this command in the terminal:

      . scripts/unmanaged.sh
      @@ -61,17 +61,19 @@ 

      Load sample metadata (see below)

      +
      sf deploy metadata  --source-dir sfdx-source/unmanaged
      +

    • If your org isn't already open, open it now:

      -
      sfdx force:org:open -u myorg
      +
      sf org open --target-org myorg
       
    • @@ -81,7 +83,7 @@

      Optional Installation Instructions

      This repository contains several files that are relevant if you want to add sample data, or integrate modern web development tooling to your Salesforce development processes or to your continuous integration/continuous deployment processes.

      -

      Data Import (Optional - NOT available if using the AppExchange managed package)

      +

      Data/Metadata Import (Optional - NOT available if using the AppExchange managed package)

      • This repository creates sample data (Accounts, Contacts, Leads) if you choose to create a scratch org. To prevent this, go to the scratch org definition and change hasSampleData to false.

        "hasSampleData": false,
        @@ -98,15 +100,15 @@ 
        +

        Data/Metadata Import (Optional - ONLY if using the AppExchange managed package)

        • When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following:

          sfdx force:apex:execute -f ./data/sample-data-managed.apex
          @@ -119,16 +121,17 @@ 

          Da
        • a sample Task layout
        • a sample report on open Action Plan-related Tasks
        -
        sfdx force:source:deploy -p sfdx-source/unmanagedExtension --tracksource
        +
        sf deploy metadata  --source-dir sfdx-source/unmanagedExtension
         
      • You can also create other sample Account and Contact records by running the following command:

        -
        sfdx force:data:tree:import -p ./data/action-plan-data-plan.json 
        +
        sf data import tree --plan ./data/action-plan-data-plan.json 
         

      Code formatting

      Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the Prettier formatter.

      +

      Prettier Apex is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow these instructions from the Salesforce Extensions site.

      Code linting

      ESLint is a popular JavaScript linting tool used to identify stylistic errors and erroneous constructs. To use ESLint with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .eslintignore file is provided as part of this repository to exclude specific files from the linting process in the context of Lightning Web Components development.

      Pre-commit hook

      diff --git a/docs/assets/search-idx.js b/docs/assets/search-idx.js index 0c74b7ed..5efb3a87 100644 --- a/docs/assets/search-idx.js +++ b/docs/assets/search-idx.js @@ -2,7 +2,7 @@ export default [ { "title": "Home", "fileName": "index.html", - "text": "Home Action Plans Changelog Action Plans Installation and Setup Please follow installation instructions, shown on the Installation page AppExchange AppExchange Listing Post-intall extras Scratch Org Developer Edition / Sandbox Apex Code Documentation About Action Plans Action Plans helps your organization encapsulate best practices into easily sharable, reusable task templates. You can create Action Plans for the following objects: Accounts Contacts Leads Opportunities Campaigns Contracts Cases Person Accounts Custom Objects Getting Help Action Plans is unsupported. For community assistance with Action Plans, please visit Salesforce Trailblazer Community . To submit ideas or issues, please visit Action Plans on Github . Community Action Plans is open source software. We welcome your issue reports, ideas, documentation, code tweaks and all other participation. Learn more . Features: Export and share your Action Plan Templates with other orgs. Import Action Plan Templates. Supports Task reminder times. Action Plans Settings controls behavior around Chatter Notifications, actions when a Lead is converted, and default Task assignment behavior Invocable Apex allows automatic Action Plan creation from a Template in Process Builder and Flow Post Install Configuration Getting started is easy. For each object, you need to add a button to the list view, add a button to the detail page. For Accounts, follow these steps:\" Update Action Plans Custom Settings Change these setting by editing Action Plan Settings, and updating values at either the organization level, profile levels, or user levels. Navigate to Setup > Develop > Custom Settings. Click on 'Manage' next to Action Plans Settings . Click the 'New' button near 'Default Organizational Level Value'. Check the values that you want to enable. Enable Chatter Post places a post in the related record's Chatter Feed(if Chatter is enabled for that object). If unchecked, Action Plans does not create a Feed Post. Unassigned Task Defaults to Record Owner ensures that Action Plan Template tasks with a blank 'Assigned To' field go to the related record's owner. If unchecked, tasks with a blank 'Assigned To' field are assigned to the running user. Tasks can be assigned to specific people on Action Plan Templates, which overrides this setting. Default Object on Lead Conversion specifies that if an Action Plan is related to a Lead, whether the Action Plan should be moved to the converted Account, Contact, or Opportunity when the Lead is converted. The default is Contact. Action Plans Business Hours ID and Use Business Hours are reserved for future functionality. Weekends: Custom Metadata Modify Custom Metadata Weekend Day to indicate which days of the week are the weekend and how many days to move a task forward or backwards to move it to the end of the previous week or the start of the next week. This allows you to work with a different weekend, or to avoid assigning any task to be due on any specific day of the week.All weekdays should have 0 in both numeric fields. Update Your Page & Search Layout Configurations Create Action Plans Buttons For each object, you need to add a button to the list view, For Accounts, follow these steps: Navigate to Setup > Object Manager > Account > Search Layouts for Salesforce Classic Click on \"Edit\" from the menu near \"List View.\" Move the \"Create Account Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Navigate to Setup > Object Manager > Account > Page Layouts. Note: the package includes a default \"Action Plan Layout\" for your reference. You do not need to use it. Click on \"Edit\" near one of your standard Account Page Layouts. Add \"Action Plans\" related list to the page. Edit the properties of the related list by clicking the configuration button above it. Expand \"Buttons\" section, clear the \"New\" checkbox and move \"Create Account Action Plan\" to the Selected buttons. Update the fields in the related list to meet your needs. Recommended fields include Start Date, Action Plan Status, Action Plan Template, Plan Start Date. Click \"Save.\" Repeat these steps for the other standard objects Action Plans supports: Contacts, Leads, Opportunities, etc. Delete Action Plans Buttons Follow this steps for Action Plan Object: Navigate to Setup > Object Manager > Action Plan > Search Layouts. Click on \"Edit\" near \"List View.\" Move the \"Delete Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Task Layout Optionally, add the \"Action Plan Task\" field to your Task page layout, but it should be Read-Only , as clearing this field will break the ability to track Action Plan progress. Security Update Your Org-Wide Default Sharing Settings Action Plans includes two shareable objects: Action Plan and Action Plan Template . You may configure your sharing settings in whatever way works for your organization. If you want anyone to be able to create and see plans and their templates, use Public Read/Write for Action Plan and Action Plan Template. If you want anyone to be able to see Action Plans and Templates without being able to change them, select \"Public Read Only.\" If your Org-Wide Default sharing settings are set to Private for Action Plan or Action Plan Template, you may need to implement custom automation to share Action Plan records with the appropriate people. You may do this via Apex sharing, or you may use other automation, to assign ownership of the Action Plan itself to the related record owner or any desired user. To use Action Plans, most users require access only to Tasks . They can be assigned Tasks without knowing that these Tasks are part of an Action Plan. Any changes they make to a Task's Status will be reflected in the related Action Plan Task Template record automatically. No Permission Set is required. Use Permission Sets For Security Assign the appropriate Permission Set(s) to each user who will need to use Action Plans: Action Plans Admin: Full permissions for Action Plans, Action Plan Templates, AP Tasks and APT Task Templates. Action Plans Template Creator: Full permissions for Action Plan Templates and AP Template Tasks. No Action Plan access. Action Plans Creator: Read, Create, Edit, Delete for Action Plans and AP Tasks. Read-only for Action Plan Templates and APT Task Templates. Action Plans Import/Export: Access to export and import Action Plan Template records. View the appropriate button for export and tab for import. Action Plans User: Read-only for Action Plans and AP Tasks. Edit permission for Tasks should be provided via the user's profile or other permission sets. Uses for each Permission Set: Some users may require visibility into the Action Plans related to those Tasks. These users need the Action Plans User  Permission Set. It gives Read-only access to Action Plan. Some users may need to create Action Plans from Templates but not edit the templates themselves. The Action Plans Creator  Permission Set gives read-only access to Action Plan Templates, and Read, Create, Edit, and Delete access to Action Plans. Users who can create and edit Action Plan Templates require the Action Plans Template Creator  Permission Set. This includes permission to Read, Create, Edit, and Delete all Action Plan Templates only. It does not include any Action Plan or Task permissions. If these users require Action Plan access, other Permission Sets should be used as well. A custom permission allows exporting of Action Plan Templates. Intended as an add-on for Action Plans Template Creator , the Action Plans Import/Export permission set allows the viewing of the Export button on Template detail pages and to the Import tab. The custom permission Action Plan Template Export allows exporting of Action Plan Templates and associated tasks. Use this permission with care, as it is a potential security hole for your org's proprietary templates. This is a great way to move templates from a Sandbox to Production org. Action Plans Admin  includes Modify All permissions for all four Action Plan objects(Action Plan, Action Plan Task Template, Action Plan Template, and Action Plan Template Task Template). The custom permission allows exporting Action Plan Templates. Note: The Apex used in Flows or via triggers does not require special permissions to run. Using Action Plans with Custom Objects To Start Using an Object with Action Plans Create the object and be sure to check \"Track Activities\" for the object attrributes Create a lookup field from Action Plan to the object. Name the field the same as the object name. The field label can be anything. As an example, if you have a custom object named MyObject__c , you must name the field on Action Plan MyObject__c Add the field to the Related Objects fieldset on Action Plan. The related object will now be available for selection when creating a new Action Plan and relating it to an object. Add the following code to the object trigger in before delete and after undelete contexts(removing the LabsActionPlans namespace if you're not using the managed package):LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'Custom_Object__c' ); Adding a New Custom Object Action Plan button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template.(Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link Give it a label and name, such as \"New MyObject Action Plan\" Display Type is List Button. Uncheck the list checkbox. Use the following format for the button(removing the LabsActionPlans namespace if you're not using the managed package):{!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType=\"CustomObject__c\", refId=CustomObject__c.Id] )} Create Action Plans for multiple Custom Object records Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: Then create a list view button for that object and add it to your list views. To Stop Using an Object with Action Plans If you want, for example, not to allow relating Action Plans to Contracts, remove the Contract field from the Action Plan Related Objects fieldset.There is no need to delete the field from the Action Plan object. Create a Template Now you're ready to create your first template. Navigate to the Action Plans Templates tab. Click on the \"New Action Plan Template\" button. The template screen looks like this: Name - Template Name. Description - An explanation of how the template should be used. Skip Weekends - Allows you to automatically reschedule a task that would fall on a weekend to either the day before or day after the weekend. When checked, a picklist appears, allowing you to select before or after the weekend. Action - Click \"X\" to eliminate a step in a template. Subject - What the task is to do. Task Dependency - The dependent task will only be created once the controlling task is completed. Days After- This value determines the due date of the task. For tasks with no dependency, the task's due date will be offset from the plan start date. For tasks with a dependency, the due date will be offset from the expected due date of the task on which it depends. Assigned To - Looks up to user. Leave blank if you want to assign the task dynamically.When assigning dynamically, the default behavior will be to assign the task to the running user. You can also have the system assign it to the record owner by changing your Action Plan Settings. See \"Post Install Configuration\" guide above. Category - What type of activity. Priority - Taken from Task priorities and Record Type(if applicable). Email - Send a standard New Task email when checked. For Tasks depending on others, the email will be sent when the task is created. Reminder - This check box will define the default behaviour for reminders when applying the template to create an Action plan . If it's left unchecked, in the Action Plan Creation page the reminders will be initially disabled If it's checked the reminders will be available. User Reminder settings: Go Personal Setup > My Personal Information > Reminders, if the option \"By default, set reminder on Tasks to:\" is checked then the selected time will be the default option for task template reminders. User setting for Activity Object : Go App Setup> Feature Settings > Sales > Activity Settings, If \"Enable Activity Reminders\" is not checked, then reminders column will not be displayed in the Action Plan creation page. Comments - Comments supporting a task. Add New Task - Adds an additional row to the tasks grid. Save - Saves the template. Task Record Types If your org uses Task Record Types, you must specify which Record Type to use for all Tasks from each Action Plan and Template record. This will affect the Status values available for each related Action Plan Task. This cannot be changed once an Action Plan or Template is created. Only one record type may be specified for all the Tasks on that Action Plan or Template. Create Action Plans for Several Accounts Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the \"Create Account Action Plans\" button. Select the template you want to use by typing the name on the lookup and clicking on it. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. Save the Action Plan. Note: Action Plan creation is handled by a queueable(asynchronous) process. It can take a couple of minutes to be able to view all created records. Verify the Action Plan and the tasks. Complete the first task on the Action Plan. Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete. Task notifications for Flow-created Action Plans User Settings To receive Task notifications if Send Email is selected on an Action Plan Task, ensure that users have been allowed to control receipt of Task notification emails(this is active by default), and that they have allowed email notifications to be sent(this is also enabled by default). See Salesforce H&T for more information. Org Setting The Send Email field on Action Plan Task must be checked to send a email notifications, and the setting Allow Flow to send delegated task notifications on records created through Apex must also be enabled. Go to Settings > Feature Settings > Sales > Activity Settings to check that box and allow email notifications to be sent via Flow-created Action Plans. Action Plan Tasks If the user has enabled task notification, then those will be sent when an Action Plan Task is created. If the Action Plan Task is updated to a new owner, and if the Send Email box is NOT checked, the user may still receive a task notification if that is in their personal settings. If the box is checked, assuming that notifications are enabled for that user, the email will be sent. Queues Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the createdTasks(which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. Automate Action Plan Creation Flow Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.Days from trigger to start Action Plan is optional(and defaults to 0). The first task will be due the number of days(specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. (Optional) Sample Action Plan Template for Account onboarding Run the following: sfdx force:apex:execute -f ./data/sample-data.apex To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow Create an Account and set Type to any value that starts with 'Customer' Process Builder It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans. It is also recommended NOT to use Process Builder at all! Apex To call the invocable Apex from a Trigger or Apex class, adapt the following sample code: UNMANAGED CODE String apTemplateName; ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ ActionPlanCreateInvocable.CreateActionPlanRequest req = new ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplate.Id; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 0; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); MANAGED PACKAGE String apTemplateName; LabsActionPlans__ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest req = new LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplateName; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 1; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = LabsActionPlans.ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); ActionPlanCreateInvocable.CreateActionPlanRequest class Variables: String templateNameOrID (required) Name is not unique, so ID is preferred Id relatedRecordID (required) Must have a relationship field named the related record object name from Action Plan object Integer daysToActionPlanStart (not required) Defaults to 0, the day the plan is created String actionPlanName (not required) Give the Action Plan a custom name. If not specified, defaults to {Template Name} - {Parent Record Name}. Share Your Templates and Discover Best Practices using Template Export and Template Import Action Plans supports the sharing and discovery of best practices using Template Export and Template Import. How to Share Your Template Export is simple. Navigate to the Template you wish to export. Click on the \"Export\" button. Export creates a simple XML file containing template header and task information. It also includes information about who created the template.Note: It does not include user information or sensitive data about what objects you might use this template with. If you are using Lightning Experience, the exported file is in your Files tab, in your private files library. If you are still using Salesforce Classic, it is in your Documents tab, in your private documents folder. Sharing the file is easy. Email the file to whomever you want to share it with. Do you want to share it with a broader audience? Email the file to Salesforce Labs at labs@salesforce.com . Best Practices: How to Import Import is also simple. Navigate to the \"Import Template\" tab. Select the file you want to import using \"Browse\" and once you've found it click on \"Import Template.\" (Optional) Sample Action Plan Template Import This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder." + "text": "Home Action Plans Changelog Action Plans Installation and Setup Please follow installation instructions, shown on the Installation page AppExchange AppExchange Listing Post-intall extras Scratch Org Developer Edition / Sandbox Apex Code Documentation About Action Plans Action Plans helps your organization encapsulate best practices into easily sharable, reusable task templates. You can create Action Plans for the following objects: Accounts Contacts Leads Opportunities Campaigns Contracts Cases Person Accounts Custom Objects Getting Help Action Plans is unsupported. For community assistance with Action Plans, please visit Salesforce Trailblazer Community . To submit ideas or issues, please visit Action Plans on Github . Community Action Plans is open source software. We welcome your issue reports, ideas, documentation, code tweaks and all other participation. Learn more . Features: Export and share your Action Plan Templates with other orgs. Import Action Plan Templates. Supports Task reminder times. Action Plans Settings controls behavior around Chatter Notifications, actions when a Lead is converted, and default Task assignment behavior Invocable Apex allows automatic Action Plan creation from a Template in Process Builder and Flow Post Install Configuration Getting started is easy. For each object, you need to add a button to the list view, add a button to the detail page. For Accounts, follow these steps:\" Update Action Plans Custom Settings Change these setting by editing Action Plan Settings, and updating values at either the organization level, profile levels, or user levels. Navigate to Setup > Develop > Custom Settings. Click on 'Manage' next to Action Plans Settings . Click the 'New' button near 'Default Organizational Level Value'. Check the values that you want to enable. Enable Chatter Post places a post in the related record's Chatter Feed(if Chatter is enabled for that object). If unchecked, Action Plans does not create a Feed Post. Unassigned Task Defaults to Record Owner ensures that Action Plan Template tasks with a blank 'Assigned To' field go to the related record's owner. If unchecked, tasks with a blank 'Assigned To' field are assigned to the running user. Tasks can be assigned to specific people on Action Plan Templates, which overrides this setting. Default Object on Lead Conversion specifies that if an Action Plan is related to a Lead, whether the Action Plan should be moved to the converted Account, Contact, or Opportunity when the Lead is converted. The default is Contact. Action Plans Business Hours ID and Use Business Hours are reserved for future functionality. Weekends: Custom Metadata Modify Custom Metadata Weekend Day to indicate which days of the week are the weekend and how many days to move a task forward or backwards to move it to the end of the previous week or the start of the next week. This allows you to work with a different weekend, or to avoid assigning any task to be due on any specific day of the week.All weekdays should have 0 in both numeric fields. Update Your Page & Search Layout Configurations Create Action Plans Buttons For each object, you need to add a button to the list view, For Accounts, follow these steps: Navigate to Setup > Object Manager > Account > Search Layouts for Salesforce Classic Click on \"Edit\" from the menu near \"List View.\" Move the \"Create Account Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Navigate to Setup > Object Manager > Account > Page Layouts. Note: the package includes a default \"Action Plan Layout\" for your reference. You do not need to use it. Click on \"Edit\" near one of your standard Account Page Layouts. Add \"Action Plans\" related list to the page. Edit the properties of the related list by clicking the configuration button above it. Expand \"Buttons\" section, clear the \"New\" checkbox and move \"Create Account Action Plan\" to the Selected buttons. Update the fields in the related list to meet your needs. Recommended fields include Start Date, Action Plan Status, Action Plan Template, Plan Start Date. Click \"Save.\" Repeat these steps for the other standard objects Action Plans supports: Contacts, Leads, Opportunities, etc. Delete Action Plans Buttons Follow this steps for Action Plan Object: Navigate to Setup > Object Manager > Action Plan > Search Layouts. Click on \"Edit\" near \"List View.\" Move the \"Delete Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Task Layout Optionally, add the \"Action Plan Task\" field to your Task page layout, but it should be Read-Only , as clearing this field will break the ability to track Action Plan progress. Security Update Your Org-Wide Default Sharing Settings Action Plans includes two shareable objects: Action Plan and Action Plan Template . You may configure your sharing settings in whatever way works for your organization. If you want anyone to be able to create and see plans and their templates, use Public Read/Write for Action Plan and Action Plan Template. If you want anyone to be able to see Action Plans and Templates without being able to change them, select \"Public Read Only.\" If your Org-Wide Default sharing settings are set to Private for Action Plan or Action Plan Template, you may need to implement custom automation to share Action Plan records with the appropriate people. You may do this via Apex sharing, or you may use other automation, to assign ownership of the Action Plan itself to the related record owner or any desired user. To use Action Plans, most users require access only to Tasks . They can be assigned Tasks without knowing that these Tasks are part of an Action Plan. Any changes they make to a Task's Status will be reflected in the related Action Plan Task Template record automatically. No Permission Set is required. Use Permission Sets For Security Assign the appropriate Permission Set(s) to each user who will need to use Action Plans: Action Plans Admin: Full permissions for Action Plans, Action Plan Templates, AP Tasks and APT Task Templates. Action Plans Template Creator: Full permissions for Action Plan Templates and AP Template Tasks. No Action Plan access. Action Plans Creator: Read, Create, Edit, Delete for Action Plans and AP Tasks. Read-only for Action Plan Templates and APT Task Templates. Action Plans Import/Export: Access to export and import Action Plan Template records. View the appropriate button for export and tab for import. Action Plans User: Read-only for Action Plans and AP Tasks. Edit permission for Tasks should be provided via the user's profile or other permission sets. Uses for each Permission Set: Some users may require visibility into the Action Plans related to those Tasks. These users need the Action Plans User  Permission Set. It gives Read-only access to Action Plan. Some users may need to create Action Plans from Templates but not edit the templates themselves. The Action Plans Creator  Permission Set gives read-only access to Action Plan Templates, and Read, Create, Edit, and Delete access to Action Plans. Users who can create and edit Action Plan Templates require the Action Plans Template Creator  Permission Set. This includes permission to Read, Create, Edit, and Delete all Action Plan Templates only. It does not include any Action Plan or Task permissions. If these users require Action Plan access, other Permission Sets should be used as well. A custom permission allows exporting of Action Plan Templates. Intended as an add-on for Action Plans Template Creator , the Action Plans Import/Export permission set allows the viewing of the Export button on Template detail pages and to the Import tab. The custom permission Action Plan Template Export allows exporting of Action Plan Templates and associated tasks. Use this permission with care, as it is a potential security hole for your org's proprietary templates. This is a great way to move templates from a Sandbox to Production org. Action Plans Admin  includes Modify All permissions for all four Action Plan objects(Action Plan, Action Plan Task Template, Action Plan Template, and Action Plan Template Task Template). The custom permission allows exporting Action Plan Templates. Note: The Apex used in Flows or via triggers does not require special permissions to run. Using Action Plans with Custom Objects To Start Using an Object with Action Plans Create the object and be sure to check \"Track Activities\" for the object attrributes Create a lookup field from Action Plan to the object. Name the field the same as the object name. The field label can be anything. As an example, if you have a custom object named MyObject__c , you must name the field on Action Plan MyObject__c Add the field to the Related Objects fieldset on Action Plan. The related object will now be available for selection when creating a new Action Plan and relating it to an object. Add the following code to the object trigger in before delete and after undelete contexts(removing the LabsActionPlans namespace if you're not using the managed package):LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' ); Test Code for Additional Objects Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage(not a best-practice!) just make a test method inserting and then deleting a record.Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet. Adding a New Custom Object Action Plan button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template.(Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link Give it a label and name, such as \"New MyObject Action Plan\" Display Type is List Button. Uncheck the list checkbox. Use the following format for the button(removing the LabsActionPlans__ namespace if you're not using the managed package):{!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType=\"CustomObject__c\", refId=CustomObject__c.Id] )} Create Action Plans for multiple Custom Object records Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: Then create a list view button for that object and add it to your list views. To Stop Using an Object with Action Plans If you want, for example, not to allow relating Action Plans to Contracts, remove the Contract field from the Action Plan Related Objects fieldset.There is no need to delete the field from the Action Plan object. Create a Template Now you're ready to create your first template. Navigate to the Action Plans Templates tab. Click on the \"New Action Plan Template\" button. The template screen looks like this: Name - Template Name. Description - An explanation of how the template should be used. Skip Weekends - Allows you to automatically reschedule a task that would fall on a weekend to either the day before or day after the weekend. When checked, a picklist appears, allowing you to select before or after the weekend. Action - Click \"X\" to eliminate a step in a template. Subject - What the task is to do. Task Dependency - The dependent task will only be created once the controlling task is completed. Days After- This value determines the due date of the task. For tasks with no dependency, the task's due date will be offset from the plan start date. For tasks with a dependency, the due date will be offset from the expected due date of the task on which it depends. Assigned To - Looks up to user. Leave blank if you want to assign the task dynamically.When assigning dynamically, the default behavior will be to assign the task to the running user. You can also have the system assign it to the record owner by changing your Action Plan Settings. See \"Post Install Configuration\" guide above. Category - What type of activity. Priority - Taken from Task priorities and Record Type(if applicable). Email - Send a standard New Task email when checked. For Tasks depending on others, the email will be sent when the task is created. Reminder - This check box will define the default behaviour for reminders when applying the template to create an Action plan . If it's left unchecked, in the Action Plan Creation page the reminders will be initially disabled If it's checked the reminders will be available. User Reminder settings: Go Personal Setup > My Personal Information > Reminders, if the option \"By default, set reminder on Tasks to:\" is checked then the selected time will be the default option for task template reminders. User setting for Activity Object : Go App Setup> Feature Settings > Sales > Activity Settings, If \"Enable Activity Reminders\" is not checked, then reminders column will not be displayed in the Action Plan creation page. Comments - Comments supporting a task. Add New Task - Adds an additional row to the tasks grid. Save - Saves the template. Task Record Types If your org uses Task Record Types, you must specify which Record Type to use for all Tasks from each Action Plan and Template record. This will affect the Status values available for each related Action Plan Task. This cannot be changed once an Action Plan or Template is created. Only one record type may be specified for all the Tasks on that Action Plan or Template. Create Action Plans for Several Accounts Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the \"Create Account Action Plans\" button. Select the template you want to use by typing the name on the lookup and clicking on it. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. Save the Action Plan. Note: Action Plan creation is handled by a queueable(asynchronous) process. It can take a couple of minutes to be able to view all created records. Verify the Action Plan and the tasks. Complete the first task on the Action Plan. Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete. Task notifications for Flow-created Action Plans User Settings To receive Task notifications if Send Email is selected on an Action Plan Task, ensure that users have been allowed to control receipt of Task notification emails(this is active by default), and that they have allowed email notifications to be sent(this is also enabled by default). See Salesforce H&T for more information. Org Setting The Send Email field on Action Plan Task must be checked to send a email notifications, and the setting Allow Flow to send delegated task notifications on records created through Apex must also be enabled. Go to Settings > Feature Settings > Sales > Activity Settings to check that box and allow email notifications to be sent via Flow-created Action Plans. Action Plan Tasks If the user has enabled task notification, then those will be sent when an Action Plan Task is created. If the Action Plan Task is updated to a new owner, and if the Send Email box is NOT checked, the user may still receive a task notification if that is in their personal settings. If the box is checked, assuming that notifications are enabled for that user, the email will be sent. Queues Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the createdTasks(which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. Automate Action Plan Creation Flow Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.Days from trigger to start Action Plan is optional(and defaults to 0). The first task will be due the number of days(specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. (Optional) Sample Action Plan Template for Account onboarding Run the following: sfdx force:apex:execute -f ./data/sample-data.apex To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow Create an Account and set Type to any value that starts with 'Customer' Process Builder It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans. It is also recommended NOT to use Process Builder at all! Apex To call the invocable Apex from a Trigger or Apex class, adapt the following sample code: UNMANAGED CODE String apTemplateName; ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ ActionPlanCreateInvocable.CreateActionPlanRequest req = new ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplate.Id; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 0; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); MANAGED PACKAGE String apTemplateName; LabsActionPlans__ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest req = new LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplateName; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 1; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = LabsActionPlans.ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); ActionPlanCreateInvocable.CreateActionPlanRequest class Variables: String templateNameOrID (required) Name is not unique, so ID is preferred Id relatedRecordID (required) Must have a relationship field named the related record object name from Action Plan object Integer daysToActionPlanStart (not required) Defaults to 0, the day the plan is created String actionPlanName (not required) Give the Action Plan a custom name. If not specified, defaults to {Template Name} - {Parent Record Name}. Share Your Templates and Discover Best Practices using Template Export and Template Import Action Plans supports the sharing and discovery of best practices using Template Export and Template Import. How to Share Your Template Export is simple. Navigate to the Template you wish to export. Click on the \"Export\" button. Export creates a simple XML file containing template header and task information. It also includes information about who created the template.Note: It does not include user information or sensitive data about what objects you might use this template with. If you are using Lightning Experience, the exported file is in your Files tab, in your private files library. If you are still using Salesforce Classic, it is in your Documents tab, in your private documents folder. Sharing the file is easy. Email the file to whomever you want to share it with. Do you want to share it with a broader audience? Email the file to Salesforce Labs at labs@salesforce.com . Best Practices: How to Import Import is also simple. Navigate to the \"Import Template\" tab. Select the file you want to import using \"Browse\" and once you've found it click on \"Import Template.\" (Optional) Sample Action Plan Template Import This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder." }, { "title": "ActionPlanCreateInvocable", @@ -27,7 +27,7 @@ export default [ { "title": "ActionPlanTemplateDetailController", "fileName": "ActionPlanTemplateDetailController.html", - "text": "ActionPlanTemplateDetailController Signature public with sharing class ActionPlanTemplateDetailController Author David Schach Since 2022 ActionPlanTemplateDetailController Properties Name Signature Annotations Description actionPlanExportXMLId public Id actionPlanExportXMLId The Id of the Action Plan for Exporting. Shown on the Export page that shares thsi controller actionPlanTemplate private ActionPlanTemplate__c actionPlanTemplate @TestVisible canDisplayReminder public Boolean canDisplayReminder Does the user have reminders enabled? taskHasRecordType public Boolean taskHasRecordType Does the org use Task RecordType? ActionPlanTemplateDetailController Constructors ActionPlanTemplateDetailController(stdController) Constructor If we can obtain the Id from the page parameters then we search for that template and set the variable for that template. If we can't obtain the Id from the page parameters then we create a new template and obtain from the controller. ActionPlanTemplateDetailController(stdController) Constructor If we can obtain the Id from the page parameters then we search for that template and set the variable for that template. If we can't obtain the Id from the page parameters then we create a new template and obtain from the controller. Signature public ActionPlanTemplateDetailController(ApexPages.StandardController stdController) Parameters stdController Type: ApexPages.StandardController Standard Controller(Action Plan Template) See ActionPlansUtilities.getCanDisplayReminder ActionPlanTemplateDetailController Methods deleteTemplate() Delete the template exportTemplateToXMLDoc() Method exports the Action Plan template into a new XML document getCanShare() If we have no share object, we don't need to show a Share button Also validate user permission to share getCanTransfer() Does the user have permission to transfer? We query UserRecordAccess to find out. getRecordTypeName() Convert Record Type Id to Record Type Name getSuccessMessage() Determine the export success message based on LEX vs Classic getTemplateTasks() Query Template Tasks onLoad() Action on page load to ensure custom setting is created deleteTemplate() Delete the template Signature public PageReference deleteTemplate() Returns PageReference Action Plan Template home tab exportTemplateToXMLDoc() Method exports the Action Plan template into a new XML document Signature public void exportTemplateToXMLDoc() See ActionPlanTemplateExport getCanShare() If we have no share object, we don't need to show a Share button Also validate user permission to share Signature public Boolean getCanShare() Returns Boolean Does the user have permission to share this Action Plan Template? See ActionPlansUtilities.canShareRecord Author David Schach getCanTransfer() Does the user have permission to transfer? We query UserRecordAccess to find out. Signature public Boolean getCanTransfer() Returns Boolean Does the user have permission to transfer this Action Plan Template? See ActionPlansUtilities.getCanTransfer Author David Schach getRecordTypeName() Convert Record Type Id to Record Type Name Signature public String getRecordTypeName() Returns String Record Type Name getSuccessMessage() Determine the export success message based on LEX vs Classic Signature public String getSuccessMessage() Returns String The success message See ActionPlansUtilities.getIsLex getTemplateTasks() Query Template Tasks Signature public List getTemplateTasks() Returns List The Template Tasks onLoad() Action on page load to ensure custom setting is created Signature public PageReference onLoad() Returns PageReference null(required for page actions method) See ActionPlansUtilities.onPageLoad" + "text": "ActionPlanTemplateDetailController Signature public with sharing class ActionPlanTemplateDetailController Author David Schach Since 2022 ActionPlanTemplateDetailController Properties Name Signature Annotations Description actionPlanExportXMLId public Id actionPlanExportXMLId The Id of the Action Plan for Exporting. Shown on the Export page that shares this controller actionPlanTemplate private ActionPlanTemplate__c actionPlanTemplate @TestVisible canDisplayReminder public Boolean canDisplayReminder Does the user have reminders enabled? taskHasRecordType public Boolean taskHasRecordType Does the org use Task RecordType? ActionPlanTemplateDetailController Constructors ActionPlanTemplateDetailController(stdController) Constructor If we can obtain the Id from the page parameters then we search for that template and set the variable for that template. If we can't obtain the Id from the page parameters then we create a new template and obtain from the controller. ActionPlanTemplateDetailController(stdController) Constructor If we can obtain the Id from the page parameters then we search for that template and set the variable for that template. If we can't obtain the Id from the page parameters then we create a new template and obtain from the controller. Signature public ActionPlanTemplateDetailController(ApexPages.StandardController stdController) Parameters stdController Type: ApexPages.StandardController Standard Controller(Action Plan Template) See ActionPlansUtilities.getCanDisplayReminder ActionPlanTemplateDetailController Methods deleteTemplate() Delete the template exportTemplateToXMLDoc() Method exports the Action Plan template into a new XML document getCanShare() If we have no share object, we don't need to show a Share button Also validate user permission to share getCanTransfer() Does the user have permission to transfer? We query UserRecordAccess to find out. getRecordTypeName() Convert Record Type Id to Record Type Name getSuccessMessage() Determine the export success message based on LEX vs Classic getTemplateTasks() Query Template Tasks onLoad() Action on page load to ensure custom setting is created deleteTemplate() Delete the template Signature public PageReference deleteTemplate() Returns PageReference Action Plan Template home tab exportTemplateToXMLDoc() Method exports the Action Plan template into a new XML document Signature public void exportTemplateToXMLDoc() See ActionPlanTemplateExport getCanShare() If we have no share object, we don't need to show a Share button Also validate user permission to share Signature public Boolean getCanShare() Returns Boolean Does the user have permission to share this Action Plan Template? See ActionPlansUtilities.canShareRecord Author David Schach getCanTransfer() Does the user have permission to transfer? We query UserRecordAccess to find out. Signature public Boolean getCanTransfer() Returns Boolean Does the user have permission to transfer this Action Plan Template? See ActionPlansUtilities.getCanTransfer Author David Schach getRecordTypeName() Convert Record Type Id to Record Type Name Signature public String getRecordTypeName() Returns String Record Type Name getSuccessMessage() Determine the export success message based on LEX vs Classic Signature public String getSuccessMessage() Returns String The success message See ActionPlansUtilities.getIsLex getTemplateTasks() Query Template Tasks Signature public List getTemplateTasks() Returns List The Template Tasks onLoad() Action on page load to ensure custom setting is created Signature public PageReference onLoad() Returns PageReference null(required for page actions method) See ActionPlansUtilities.onPageLoad" }, { "title": "ActionPlanTemplateExport", @@ -87,7 +87,7 @@ export default [ { "title": "ActionPlansTestUtilities", "fileName": "ActionPlansTestUtilities.html", - "text": "ActionPlansTestUtilities Utilities for Tests Signature public inherited sharing class ActionPlansTestUtilities Author David Schach Since 2022 ActionPlansTestUtilities Properties Name Signature Annotations Description forceError public static Boolean forceError Used in testing - we force an Error during tests forceHasRecordType public static Boolean forceHasRecordType Used during testing to \"fool\" the org into thinking that it has Task record types standardObjects private static Set standardObjects @TestVisible Standard objects included in this package ActionPlansTestUtilities Methods assignAPPermissionSets(testUserId, allOrNone) Assign a permissionSet to a user(via UserId) createAdminUser() Create an ActionPlans Admin user, plus all other permissions, for full ability to access certain tests. createNewAccount(insertRecord) Creates a new Account SObject With option to insert or just return the record createNewAccount() Creates a new Account SObject Inserts before returning createNewActionPlan(relatedObject, numTasks) Create Action Plan and APTaskss createNewActionPlanTask(actionPlan, days, userId, category, priority) Create Action Plan Task createNewActionPlanTemplate(numTasks) Create Action Plan Template and Action Plan Template Tasks createNewActionPlanTemplateTask(apTemplate, days, userId, category, priority) Create Action Plan Template Task createNewCampaign(insertRecord) Creates a new Campaign SObject createNewCampaign() Creates a new Campaign SObject Inserts before returning createNewCase(insertRecord) Creates a new Case SObject createNewCase() Creates a new Case Object Inserts before returning createNewContact(insertRecord) Creates a new Contact Object createNewContact() Creates a new Contact Object Inserts before returning createNewContract(insertRecord) Creates a new Contract Object createNewContract() Creates a new Contract Object Inserts before returning createNewLead(insertRecord) Creates a new Lead Object createNewLead() Creates a new Lead Object Inserts before returning createNewOpportunity(insertRecord) Creates a new Opportunity Object createNewOpportunity() Creates a new Opportunity Object Inserts before returning createRandomWord() Random words are required for testing, as you will likely run into any word I can insert during a test class and produce false test results. createRandomWord(prefix) Make a random String with a specific prefix and a random Integer createTestUser() A random user is useful for testing in order to be sure that you are able to see data across posts regardless of follow status. If we find a profile, INSERT the user and return it. If we find no profile, return null; A Permission Set would still be required createTestUser(p) Creates a new User with a specific profile getCompleted(actionPlanId) Retrieves number of completed tasks(that have an activity date) getNonDefaultAvailableTaskRecordType() Find a non-default Task Record Type assignAPPermissionSets(testUserId, allOrNone) Assign a permissionSet to a user(via UserId) Signature public List assignAPPermissionSets(Id testUserId, Boolean allOrNone) Parameters testUserId Type: Id The User ID allOrNone Type: Boolean Insert allOrNone, or allow an insert of only successful assingments, failing silently Returns List The list of PermissionSetAssignment records Author David Schach createAdminUser() Create an ActionPlans Admin user, plus all other permissions, for full ability to access certain tests. Signature public User createAdminUser() Returns User an admin user with all Action Plans permission sets See ActionPlansTestUtilities.createTestUser , ActionPlansTestUtilities.assignAPPermissionSets createNewAccount(insertRecord) Creates a new Account SObject With option to insert or just return the record Signature public Account createNewAccount(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Account createNewAccount() Creates a new Account SObject Inserts before returning Signature public Account createNewAccount() Returns inserted Account createNewActionPlan(relatedObject, numTasks) Create Action Plan and APTaskss Signature public ActionPlan__c createNewActionPlan(String relatedObject, Integer numTasks) Parameters relatedObject Type: String The Related Object(included field) for the Action Plan numTasks Type: Integer How many tasks to create for the ActionPlan Returns new ActionPlan__c See ActionPlansTestUtilities.createNewActionPlanTask createNewActionPlanTask(actionPlan, days, userId, category, priority) Create Action Plan Task Signature public APTask__c createNewActionPlanTask(ActionPlan__c actionPlan, Integer days, Id userId, String category, String priority) Parameters actionPlan Type: ActionPlan__c The ActionPlan__c object days Type: Integer Days from actionPlan Start Date to schedule the task userId Type: Id The assigned owner Id category Type: String Task Type priority Type: String Task Priority Returns APTask__c The created APTask__c record Author David Schach createNewActionPlanTemplate(numTasks) Create Action Plan Template and Action Plan Template Tasks Signature public ActionPlanTemplate__c createNewActionPlanTemplate(Integer numTasks) Parameters numTasks Type: Integer Number of tasks to create Returns ActionPlanTemplate__c Action Plan Template See ActionPlansTestUtilities.createNewActionPlanTemplateTask Author David Schach createNewActionPlanTemplateTask(apTemplate, days, userId, category, priority) Create Action Plan Template Task Signature public APTemplateTask__c createNewActionPlanTemplateTask(ActionPlanTemplate__c apTemplate, Integer days, Id userId, String category, String priority) Parameters apTemplate Type: ActionPlanTemplate__c The parent ActionPlanTemplate__c object days Type: Integer Days from now to start Action Plan userId Type: Id The assigned user for each created task category Type: String Task Category priority Type: String Task Priority Returns APTemplateTask__c The new Action Plan Template Task Template Author David Schach createNewCampaign(insertRecord) Creates a new Campaign SObject Signature public Campaign createNewCampaign(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Campaign See ActionPlansTestUtilities.createNewCampaign createNewCampaign() Creates a new Campaign SObject Inserts before returning Signature public Campaign createNewCampaign() Returns inserted Campaign See ActionPlansTestUtilities.createNewCampaign createNewCase(insertRecord) Creates a new Case SObject Signature public Case createNewCase(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Case createNewCase() Creates a new Case Object Inserts before returning Signature public Case createNewCase() Returns inserted Case createNewContact(insertRecord) Creates a new Contact Object Signature public Contact createNewContact(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Contact createNewContact() Creates a new Contact Object Inserts before returning Signature public Contact createNewContact() Returns inserted Contact createNewContract(insertRecord) Creates a new Contract Object Signature public Contract createNewContract(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns inserted Contract createNewContract() Creates a new Contract Object Inserts before returning Signature public Contract createNewContract() Returns inserted Contract createNewLead(insertRecord) Creates a new Lead Object Signature public Lead createNewLead(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Lead createNewLead() Creates a new Lead Object Inserts before returning Signature public Lead createNewLead() Returns inserted Lead createNewOpportunity(insertRecord) Creates a new Opportunity Object Signature public Opportunity createNewOpportunity(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Opportunity See ActionPlansTestUtilities.createNewOpportunity createNewOpportunity() Creates a new Opportunity Object Inserts before returning Signature public Opportunity createNewOpportunity() Returns inserted Opportunity See ActionPlansTestUtilities.createNewOpportunity createRandomWord() Random words are required for testing, as you will likely run into any word I can insert during a test class and produce false test results. Signature public String createRandomWord() Returns A random word createRandomWord(prefix) Make a random String with a specific prefix and a random Integer Signature public String createRandomWord(String prefix) Parameters prefix Type: String The prefix Returns String The random word Example createRandomWord('test'); test123456 createTestUser() A random user is useful for testing in order to be sure that you are able to see data across posts regardless of follow status. If we find a profile, INSERT the user and return it. If we find no profile, return null; A Permission Set would still be required Signature public User createTestUser() Returns User A newly-created User with Modify All Data createTestUser(p) Creates a new User with a specific profile Signature public User createTestUser(Profile p) Parameters p Type: Profile Profile(not the Id) Returns User Testuser getCompleted(actionPlanId) Retrieves number of completed tasks(that have an activity date) Signature @testVisible private static Integer getCompleted(Id actionPlanId) Parameters actionPlanId Type: Id Id of Action Plan so we can query closed/completed Tasks Returns Integer Count of completed tasks for this Action Plan getNonDefaultAvailableTaskRecordType() Find a non-default Task Record Type Signature @testVisible private static Id getNonDefaultAvailableTaskRecordType() Returns Id The Id of a non-default Task Record Type for the running user Author David Schach" + "text": "ActionPlansTestUtilities Utilities for Tests Signature public inherited sharing class ActionPlansTestUtilities Author David Schach Since 2022 2023 Begin exposing methods to cover custom objects ActionPlansTestUtilities Properties Name Signature Annotations Description forceError public static Boolean forceError Used in testing - we force an Error during tests forceHasRecordType public static Boolean forceHasRecordType Used during testing to \"fool\" the org into thinking that it has Task record types standardObjects private static Set standardObjects @TestVisible Standard objects included in this package ActionPlansTestUtilities Methods assignAPPermissionSets(testUserId, allOrNone) Assign a permissionSet to a user(via UserId) createAdminUser() Create an ActionPlans Admin user, plus all other permissions, for full ability to access certain tests. createNewAccount(insertRecord) Creates a new Account SObject With option to insert or just return the record createNewAccount() Creates a new Account SObject Inserts before returning createNewActionPlan(relatedObject, numTasks, customObjectId) Create Action Plan and APTaskss createNewActionPlanTask(actionPlan, days, userId, category, priority) Create Action Plan Task createNewActionPlanTemplate(numTasks) Create Action Plan Template and Action Plan Template Tasks createNewActionPlanTemplateTask(apTemplate, days, userId, category, priority) Create Action Plan Template Task createNewCampaign(insertRecord) Creates a new Campaign SObject createNewCampaign() Creates a new Campaign SObject Inserts before returning createNewCase(insertRecord) Creates a new Case SObject createNewCase() Creates a new Case Object Inserts before returning createNewContact(insertRecord) Creates a new Contact Object createNewContact() Creates a new Contact Object Inserts before returning createNewContract(insertRecord) Creates a new Contract Object createNewContract() Creates a new Contract Object Inserts before returning createNewLead(insertRecord) Creates a new Lead Object createNewLead() Creates a new Lead Object Inserts before returning createNewOpportunity(insertRecord) Creates a new Opportunity Object createNewOpportunity() Creates a new Opportunity Object Inserts before returning createRandomWord() Random words are required for testing, as you will likely run into any word I can insert during a test class and produce false test results. createRandomWord(prefix) Make a random String with a specific prefix and a random Integer createTestUser() A random user is useful for testing in order to be sure that you are able to see data across posts regardless of follow status. If we find a profile, INSERT the user and return it. If we find no profile, return null; A Permission Set would still be required createTestUser(p) Creates a new User with a specific profile getCompleted(actionPlanId) Retrieves number of completed tasks(that have an activity date) getNonDefaultAvailableTaskRecordType() Find a non-default Task Record Type assignAPPermissionSets(testUserId, allOrNone) Assign a permissionSet to a user(via UserId) Signature public List assignAPPermissionSets(Id testUserId, Boolean allOrNone) Parameters testUserId Type: Id The User ID allOrNone Type: Boolean Insert allOrNone, or allow an insert of only successful assingments, failing silently Returns List The list of PermissionSetAssignment records Author David Schach createAdminUser() Create an ActionPlans Admin user, plus all other permissions, for full ability to access certain tests. Signature public User createAdminUser() Returns User an admin user with all Action Plans permission sets See ActionPlansTestUtilities.createTestUser , ActionPlansTestUtilities.assignAPPermissionSets createNewAccount(insertRecord) Creates a new Account SObject With option to insert or just return the record Signature public Account createNewAccount(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Account createNewAccount() Creates a new Account SObject Inserts before returning Signature public Account createNewAccount() Returns inserted Account createNewActionPlan(relatedObject, numTasks, customObjectId) Create Action Plan and APTaskss Signature public ActionPlan__c createNewActionPlan(String relatedObject, Integer numTasks, Id customObjectId) Parameters relatedObject Type: String The Related Object(included field) for the Action Plan numTasks Type: Integer How many tasks to create for the ActionPlan customObjectId Type: Id For a Custom Object, pass in the Id of the created record so we don't have to do that here Returns new ActionPlan__c See ActionPlansTestUtilities.createNewActionPlanTask Example ActionPlansTestUtilities testUtil = new ActionPlansTestUtilities(); ActionPlan__c actionPlan = testUtil.createNewActionPlan('account', 3, null); or ActionPlan__c actionPlan = testUtil.createNewActionPlan('customObject__c', 3, '02a000000000000000'); createNewActionPlanTask(actionPlan, days, userId, category, priority) Create Action Plan Task Signature public APTask__c createNewActionPlanTask(ActionPlan__c actionPlan, Integer days, Id userId, String category, String priority) Parameters actionPlan Type: ActionPlan__c The ActionPlan__c object days Type: Integer Days from actionPlan Start Date to schedule the task userId Type: Id The assigned owner Id category Type: String Task Type priority Type: String Task Priority Returns APTask__c The created APTask__c record Author David Schach createNewActionPlanTemplate(numTasks) Create Action Plan Template and Action Plan Template Tasks Signature public ActionPlanTemplate__c createNewActionPlanTemplate(Integer numTasks) Parameters numTasks Type: Integer Number of tasks to create Returns ActionPlanTemplate__c Action Plan Template See ActionPlansTestUtilities.createNewActionPlanTemplateTask Author David Schach createNewActionPlanTemplateTask(apTemplate, days, userId, category, priority) Create Action Plan Template Task Signature public APTemplateTask__c createNewActionPlanTemplateTask(ActionPlanTemplate__c apTemplate, Integer days, Id userId, String category, String priority) Parameters apTemplate Type: ActionPlanTemplate__c The parent ActionPlanTemplate__c object days Type: Integer Days from now to start Action Plan userId Type: Id The assigned user for each created task category Type: String Task Category priority Type: String Task Priority Returns APTemplateTask__c The new Action Plan Template Task Template Author David Schach createNewCampaign(insertRecord) Creates a new Campaign SObject Signature public Campaign createNewCampaign(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Campaign See ActionPlansTestUtilities.createNewCampaign createNewCampaign() Creates a new Campaign SObject Inserts before returning Signature public Campaign createNewCampaign() Returns inserted Campaign See ActionPlansTestUtilities.createNewCampaign createNewCase(insertRecord) Creates a new Case SObject Signature public Case createNewCase(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Case createNewCase() Creates a new Case Object Inserts before returning Signature public Case createNewCase() Returns inserted Case createNewContact(insertRecord) Creates a new Contact Object Signature public Contact createNewContact(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Contact createNewContact() Creates a new Contact Object Inserts before returning Signature public Contact createNewContact() Returns inserted Contact createNewContract(insertRecord) Creates a new Contract Object Signature public Contract createNewContract(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns inserted Contract createNewContract() Creates a new Contract Object Inserts before returning Signature public Contract createNewContract() Returns inserted Contract createNewLead(insertRecord) Creates a new Lead Object Signature public Lead createNewLead(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Lead createNewLead() Creates a new Lead Object Inserts before returning Signature public Lead createNewLead() Returns inserted Lead createNewOpportunity(insertRecord) Creates a new Opportunity Object Signature public Opportunity createNewOpportunity(Boolean insertRecord) Parameters insertRecord Type: Boolean Insert the record before returning it? Returns new Opportunity See ActionPlansTestUtilities.createNewOpportunity createNewOpportunity() Creates a new Opportunity Object Inserts before returning Signature public Opportunity createNewOpportunity() Returns inserted Opportunity See ActionPlansTestUtilities.createNewOpportunity createRandomWord() Random words are required for testing, as you will likely run into any word I can insert during a test class and produce false test results. Signature public String createRandomWord() Returns A random word createRandomWord(prefix) Make a random String with a specific prefix and a random Integer Signature public String createRandomWord(String prefix) Parameters prefix Type: String The prefix Returns String The random word Example createRandomWord('test'); test123456 createTestUser() A random user is useful for testing in order to be sure that you are able to see data across posts regardless of follow status. If we find a profile, INSERT the user and return it. If we find no profile, return null; A Permission Set would still be required Signature public User createTestUser() Returns User A newly-created User with Modify All Data createTestUser(p) Creates a new User with a specific profile Signature public User createTestUser(Profile p) Parameters p Type: Profile Profile(not the Id) Returns User Testuser getCompleted(actionPlanId) Retrieves number of completed tasks(that have an activity date) Signature @testVisible private static Integer getCompleted(Id actionPlanId) Parameters actionPlanId Type: Id Id of Action Plan so we can query closed/completed Tasks Returns Integer Count of completed tasks for this Action Plan getNonDefaultAvailableTaskRecordType() Find a non-default Task Record Type Signature @testVisible private static Id getNonDefaultAvailableTaskRecordType() Returns Id The Id of a non-default Task Record Type for the running user Author David Schach" }, { "title": "ActionPlansTriggerHandlers", @@ -107,12 +107,12 @@ export default [ { "title": "ActionPlanCreateInvocableTest", "fileName": "ActionPlanCreateInvocableTest.html", - "text": "ActionPlanCreateInvocableTest Test class for Invocable Apex class Signature @IsTest private class ActionPlanCreateInvocableTest See ActionPlanCreateInvocable Since 2022 Author David Schach ActionPlanCreateInvocableTest Properties Name Signature BULK_COUNT private static final Integer BULK_COUNT TASK_COUNT private static final Integer TASK_COUNT ActionPlanCreateInvocableTest Methods bogusTemplateName() bulkAccounts() checkWeekendDueDate() relatedAccount() relatedCampaign() relatedCase() relatedContact() relatedContract() relatedLead() relatedOpportunity() setupRequest(templateId, relatedID, daysToActionPlanStart) Helper method for setting up a request for Invocable Apex setupRequest(templateId, relatedID, daysToActionPlanStart, actionPlanName) Helper method for setting up a request for Invocable Apex bogusTemplateName() Signature @IsTest private static void bogusTemplateName() bulkAccounts() Signature @IsTest private static void bulkAccounts() checkWeekendDueDate() Signature @IsTest private static void checkWeekendDueDate() relatedAccount() Signature @IsTest private static void relatedAccount() relatedCampaign() Signature @IsTest private static void relatedCampaign() relatedCase() Signature @IsTest private static void relatedCase() relatedContact() Signature @IsTest private static void relatedContact() relatedContract() Signature @IsTest private static void relatedContract() relatedLead() Signature @IsTest private static void relatedLead() relatedOpportunity() Signature @IsTest private static void relatedOpportunity() setupRequest(templateId, relatedID, daysToActionPlanStart) Helper method for setting up a request for Invocable Apex Signature private static ActionPlanCreateInvocable.CreateActionPlanRequest setupRequest(String templateId, Id relatedID, Integer daysToActionPlanStart) Parameters templateId Type: String Name or Id of Action Plan Template relatedID Type: Id Parent record Id daysToActionPlanStart Type: Integer Days after today to start the first task Returns ActionPlanCreateInvocable.CreateActionPlanRequest Used in Invocable Apex See ActionPlanCreateInvocableTest.setupRequest setupRequest(templateId, relatedID, daysToActionPlanStart, actionPlanName) Helper method for setting up a request for Invocable Apex Signature private static ActionPlanCreateInvocable.CreateActionPlanRequest setupRequest(String templateId, Id relatedID, Integer daysToActionPlanStart, String actionPlanName) Parameters templateId Type: String Name or Id of Action Plan Template relatedID Type: Id Parent record Id daysToActionPlanStart Type: Integer Days after today to start the first task actionPlanName Type: String Intended name of the Action Plan Returns ActionPlanCreateInvocable.CreateActionPlanRequest Used in Invocable Apex See ActionPlanCreateInvocableTest.setupRequest" + "text": "ActionPlanCreateInvocableTest Test class for Invocable Apex class Signature @IsTest private class ActionPlanCreateInvocableTest See ActionPlanCreateInvocable Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlanCreateInvocableTest Properties Name Signature BULK_COUNT private static final Integer BULK_COUNT TASK_COUNT private static final Integer TASK_COUNT ActionPlanCreateInvocableTest Methods bogusTemplateName() bulkAccounts() checkWeekendDueDate() relatedAccount() relatedCampaign() relatedCase() relatedContact() relatedContract() relatedLead() relatedOpportunity() setupRequest(templateId, relatedID, daysToActionPlanStart) Helper method for setting up a request for Invocable Apex setupRequest(templateId, relatedID, daysToActionPlanStart, actionPlanName) Helper method for setting up a request for Invocable Apex bogusTemplateName() Signature @IsTest private static void bogusTemplateName() bulkAccounts() Signature @IsTest private static void bulkAccounts() checkWeekendDueDate() Signature @IsTest private static void checkWeekendDueDate() relatedAccount() Signature @IsTest private static void relatedAccount() relatedCampaign() Signature @IsTest private static void relatedCampaign() relatedCase() Signature @IsTest private static void relatedCase() relatedContact() Signature @IsTest private static void relatedContact() relatedContract() Signature @IsTest private static void relatedContract() relatedLead() Signature @IsTest private static void relatedLead() relatedOpportunity() Signature @IsTest private static void relatedOpportunity() setupRequest(templateId, relatedID, daysToActionPlanStart) Helper method for setting up a request for Invocable Apex Signature private static ActionPlanCreateInvocable.CreateActionPlanRequest setupRequest(String templateId, Id relatedID, Integer daysToActionPlanStart) Parameters templateId Type: String Name or Id of Action Plan Template relatedID Type: Id Parent record Id daysToActionPlanStart Type: Integer Days after today to start the first task Returns ActionPlanCreateInvocable.CreateActionPlanRequest Used in Invocable Apex See ActionPlanCreateInvocableTest.setupRequest setupRequest(templateId, relatedID, daysToActionPlanStart, actionPlanName) Helper method for setting up a request for Invocable Apex Signature private static ActionPlanCreateInvocable.CreateActionPlanRequest setupRequest(String templateId, Id relatedID, Integer daysToActionPlanStart, String actionPlanName) Parameters templateId Type: String Name or Id of Action Plan Template relatedID Type: Id Parent record Id daysToActionPlanStart Type: Integer Days after today to start the first task actionPlanName Type: String Intended name of the Action Plan Returns ActionPlanCreateInvocable.CreateActionPlanRequest Used in Invocable Apex See ActionPlanCreateInvocableTest.setupRequest" }, { "title": "ActionPlanCreationControllerTest", "fileName": "ActionPlanCreationControllerTest.html", - "text": "ActionPlanCreationControllerTest Tests for ActionPlan__c Create/Edit Visualforce Extension Signature @IsTest private class ActionPlanCreationControllerTest See ActionPlanCreationController Author David Schach ActionPlanCreationControllerTest Methods actionPlanSave() actionPlanSaveAndMakeDependent() actionPlanSaveAndNew() addNewTask() changeAPTaskOwner() checkActionPlanTaskList() checkCompletedTasks() checkMaxTasks() checkMaxTasksError() checkReferredObject() checkSubjectItems() constructorTests() cyclicDependencyTasksFail() cyclicDependencyTaskSuccess() forceNoRecordTypes() forceRecordTypes() longNameTasks() makeData() newAPWithoutTasks() relateToMultipleContacts() removeActionPlanTask() saveAndDelete() saveAndView() setTaskRecordType() singleRecordConstructor() actionPlanSave() Signature @IsTest private static void actionPlanSave() actionPlanSaveAndMakeDependent() Signature @IsTest private static void actionPlanSaveAndMakeDependent() actionPlanSaveAndNew() Signature @IsTest private static void actionPlanSaveAndNew() addNewTask() Signature @IsTest private static void addNewTask() changeAPTaskOwner() Signature @IsTest private static void changeAPTaskOwner() checkActionPlanTaskList() Signature @IsTest private static void checkActionPlanTaskList() checkCompletedTasks() Signature @IsTest private static void checkCompletedTasks() checkMaxTasks() Signature @IsTest private static void checkMaxTasks() checkMaxTasksError() Signature @IsTest private static void checkMaxTasksError() checkReferredObject() Signature @IsTest private static void checkReferredObject() checkSubjectItems() Signature @IsTest private static void checkSubjectItems() constructorTests() Signature @IsTest private static void constructorTests() cyclicDependencyTasksFail() Signature @IsTest private static void cyclicDependencyTasksFail() cyclicDependencyTaskSuccess() Signature @IsTest private static void cyclicDependencyTaskSuccess() forceNoRecordTypes() Signature @IsTest private static void forceNoRecordTypes() forceRecordTypes() Signature @IsTest private static void forceRecordTypes() longNameTasks() Signature @IsTest private static void longNameTasks() makeData() Signature @TestSetup private static void makeData() newAPWithoutTasks() Signature @IsTest private static void newAPWithoutTasks() relateToMultipleContacts() Signature @IsTest private static void relateToMultipleContacts() removeActionPlanTask() Signature @IsTest private static void removeActionPlanTask() saveAndDelete() Signature @IsTest private static void saveAndDelete() saveAndView() Signature @IsTest private static void saveAndView() setTaskRecordType() Signature @IsTest private static void setTaskRecordType() singleRecordConstructor() Signature @IsTest private static void singleRecordConstructor()" + "text": "ActionPlanCreationControllerTest Tests for ActionPlan__c Create/Edit Visualforce Extension Signature @IsTest private class ActionPlanCreationControllerTest See ActionPlanCreationController Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlanCreationControllerTest Methods actionPlanSave() actionPlanSaveAndMakeDependent() actionPlanSaveAndNew() addNewTask() changeAPTaskOwner() checkActionPlanTaskList() checkCompletedTasks() checkMaxTasks() checkMaxTasksError() checkReferredObject() checkSubjectItems() constructorTests() cyclicDependencyTasksFail() cyclicDependencyTaskSuccess() forceNoRecordTypes() forceRecordTypes() longNameTasks() makeData() newAPWithoutTasks() relateToMultipleContacts() removeActionPlanTask() saveAndDelete() saveAndView() setTaskRecordType() singleRecordConstructor() actionPlanSave() Signature @IsTest private static void actionPlanSave() actionPlanSaveAndMakeDependent() Signature @IsTest private static void actionPlanSaveAndMakeDependent() actionPlanSaveAndNew() Signature @IsTest private static void actionPlanSaveAndNew() addNewTask() Signature @IsTest private static void addNewTask() changeAPTaskOwner() Signature @IsTest private static void changeAPTaskOwner() checkActionPlanTaskList() Signature @IsTest private static void checkActionPlanTaskList() checkCompletedTasks() Signature @IsTest private static void checkCompletedTasks() checkMaxTasks() Signature @IsTest private static void checkMaxTasks() checkMaxTasksError() Signature @IsTest private static void checkMaxTasksError() checkReferredObject() Signature @IsTest private static void checkReferredObject() checkSubjectItems() Signature @IsTest private static void checkSubjectItems() constructorTests() Signature @IsTest private static void constructorTests() cyclicDependencyTasksFail() Signature @IsTest private static void cyclicDependencyTasksFail() cyclicDependencyTaskSuccess() Signature @IsTest private static void cyclicDependencyTaskSuccess() forceNoRecordTypes() Signature @IsTest private static void forceNoRecordTypes() forceRecordTypes() Signature @IsTest private static void forceRecordTypes() longNameTasks() Signature @IsTest private static void longNameTasks() makeData() Signature @TestSetup private static void makeData() newAPWithoutTasks() Signature @IsTest private static void newAPWithoutTasks() relateToMultipleContacts() Signature @IsTest private static void relateToMultipleContacts() removeActionPlanTask() Signature @IsTest private static void removeActionPlanTask() saveAndDelete() Signature @IsTest private static void saveAndDelete() saveAndView() Signature @IsTest private static void saveAndView() setTaskRecordType() Signature @IsTest private static void setTaskRecordType() singleRecordConstructor() Signature @IsTest private static void singleRecordConstructor()" }, { "title": "ActionPlanCreationTaskWrapperTest", @@ -137,17 +137,17 @@ export default [ { "title": "ActionPlanTemplateExportTest", "fileName": "ActionPlanTemplateExportTest.html", - "text": "ActionPlanTemplateExportTest Tests for Template Export Signature @IsTest private class ActionPlanTemplateExportTest See ActionPlanTemplateExport , ActionPlanTemplateImportController Author David Schach Since 2022 ActionPlanTemplateExportTest Methods exportDocTest() exportFileTest() exportTest() exportDocTest() Signature @IsTest private static void exportDocTest() exportFileTest() Signature @IsTest private static void exportFileTest() exportTest() Signature @IsTest private static void exportTest()" + "text": "ActionPlanTemplateExportTest Tests for Template Export Signature @IsTest private class ActionPlanTemplateExportTest See ActionPlanTemplateExport , ActionPlanTemplateImportController Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlanTemplateExportTest Methods exportDocTest() exportFileTest() exportTest() exportDocTest() Signature @IsTest private static void exportDocTest() exportFileTest() Signature @IsTest private static void exportFileTest() exportTest() Signature @IsTest private static void exportTest()" }, { "title": "ActionPlanTemplateImportCntrlTest", "fileName": "ActionPlanTemplateImportCntrlTest.html", - "text": "ActionPlanTemplateImportCntrlTest Test class for importing Action Plan Template XML Signature @IsTest private class ActionPlanTemplateImportCntrlTest See ActionPlanTemplateImportController Author David Schach Since 2022 ActionPlanTemplateImportCntrlTest Properties Name Signature xmlImport private static String xmlImport xmlImportEmptyMetaData private static String xmlImportEmptyMetaData xmlImportFromExport private static String xmlImportFromExport xmlImportWrongAPTask private static String xmlImportWrongAPTask xmlImportWrongAPTemplate private static String xmlImportWrongAPTemplate xmlImportWrongMetaData private static String xmlImportWrongMetaData xmlWithControllingTasks private static String xmlWithControllingTasks ActionPlanTemplateImportCntrlTest Methods badFields() controllingTask() roundTrip() xMLImport() xMLImportEmptyAttachment() xMLImportEmptyXML() xMLImportFromExport() xMLImportWrongMetaData() xMLImportWrongTemplate() xMLImportWrongTemplateTask() badFields() Signature @IsTest private static void badFields() controllingTask() Signature @IsTest private static void controllingTask() roundTrip() Signature @IsTest private static void roundTrip() xMLImport() Signature @IsTest private static void xMLImport() xMLImportEmptyAttachment() Signature @IsTest private static void xMLImportEmptyAttachment() xMLImportEmptyXML() Signature @IsTest private static void xMLImportEmptyXML() xMLImportFromExport() Signature @IsTest private static void xMLImportFromExport() xMLImportWrongMetaData() Signature @IsTest private static void xMLImportWrongMetaData() xMLImportWrongTemplate() Signature @IsTest private static void xMLImportWrongTemplate() xMLImportWrongTemplateTask() Signature @IsTest private static void xMLImportWrongTemplateTask()" + "text": "ActionPlanTemplateImportCntrlTest Test class for importing Action Plan Template XML Signature @IsTest private class ActionPlanTemplateImportCntrlTest See ActionPlanTemplateImportController Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlanTemplateImportCntrlTest Properties Name Signature xmlImport private static String xmlImport xmlImportEmptyMetaData private static String xmlImportEmptyMetaData xmlImportFromExport private static String xmlImportFromExport xmlImportWrongAPTask private static String xmlImportWrongAPTask xmlImportWrongAPTemplate private static String xmlImportWrongAPTemplate xmlImportWrongMetaData private static String xmlImportWrongMetaData xmlWithControllingTasks private static String xmlWithControllingTasks ActionPlanTemplateImportCntrlTest Methods badFields() controllingTask() roundTrip() xMLImport() xMLImportEmptyAttachment() xMLImportEmptyXML() xMLImportFromExport() xMLImportWrongMetaData() xMLImportWrongTemplate() xMLImportWrongTemplateTask() badFields() Signature @IsTest private static void badFields() controllingTask() Signature @IsTest private static void controllingTask() roundTrip() Signature @IsTest private static void roundTrip() xMLImport() Signature @IsTest private static void xMLImport() xMLImportEmptyAttachment() Signature @IsTest private static void xMLImportEmptyAttachment() xMLImportEmptyXML() Signature @IsTest private static void xMLImportEmptyXML() xMLImportFromExport() Signature @IsTest private static void xMLImportFromExport() xMLImportWrongMetaData() Signature @IsTest private static void xMLImportWrongMetaData() xMLImportWrongTemplate() Signature @IsTest private static void xMLImportWrongTemplate() xMLImportWrongTemplateTask() Signature @IsTest private static void xMLImportWrongTemplateTask()" }, { "title": "ActionPlansCreateMultipleAPsExtTest", "fileName": "ActionPlansCreateMultipleAPsExtTest.html", - "text": "ActionPlansCreateMultipleAPsExtTest Tests for the Visualforce controller extension for the button to enable creation of multiple action plans for all checked records in a list view Signature @IsTest private class ActionPlansCreateMultipleAPsExtTest See ActionPlansCreateMultipleAPsExtension Author David Schach ActionPlansCreateMultipleAPsExtTest Methods givenNoRecordsToCreateThenNotCreated() givenRecordsToCreateThenCreated() givenNoRecordsToCreateThenNotCreated() Signature @IsTest private static void givenNoRecordsToCreateThenNotCreated() givenRecordsToCreateThenCreated() Signature @IsTest private static void givenRecordsToCreateThenCreated()" + "text": "ActionPlansCreateMultipleAPsExtTest Tests for the Visualforce controller extension for the button to enable creation of multiple action plans for all checked records in a list view Signature @IsTest private class ActionPlansCreateMultipleAPsExtTest See ActionPlansCreateMultipleAPsExtension Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlansCreateMultipleAPsExtTest Methods givenNoRecordsToCreateThenNotCreated() givenRecordsToCreateThenCreated() givenNoRecordsToCreateThenNotCreated() Signature @IsTest private static void givenNoRecordsToCreateThenNotCreated() givenRecordsToCreateThenCreated() Signature @IsTest private static void givenRecordsToCreateThenCreated()" }, { "title": "ActionPlansDeleteMultipleAPExtTest", @@ -162,17 +162,17 @@ export default [ { "title": "ActionPlansPostInstallScriptTest", "fileName": "ActionPlansPostInstallScriptTest.html", - "text": "ActionPlansPostInstallScriptTest Test for PostInstallScript Utility Signature @IsTest private class ActionPlansPostInstallScriptTest See ActionPlansPostInstallScript Author David Schach Since 2022 ActionPlansPostInstallScriptTest Methods installScript() installScript() Signature @isTest private static void installScript()" + "text": "ActionPlansPostInstallScriptTest Test for PostInstallScript Utility Signature @IsTest private class ActionPlansPostInstallScriptTest See ActionPlansPostInstallScript Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlansPostInstallScriptTest Methods installScript() installScript() Signature @isTest private static void installScript()" }, { "title": "ActionPlansQueueableBuilderTest", "fileName": "ActionPlansQueueableBuilderTest.html", - "text": "ActionPlansQueueableBuilderTest Test for Action Plans Queueable Builder Signature @IsTest private class ActionPlansQueueableBuilderTest See ActionPlansQueuableBuilder Author David Schach ActionPlansQueueableBuilderTest Methods makeData() runQueueContact() runQueueException() makeData() Signature @TestSetup private static void makeData() runQueueContact() Signature @IsTest private static void runQueueContact() runQueueException() Signature @IsTest private static void runQueueException()" + "text": "ActionPlansQueueableBuilderTest Test for Action Plans Queueable Builder Signature @IsTest private class ActionPlansQueueableBuilderTest See ActionPlansQueuableBuilder Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlansQueueableBuilderTest Methods makeData() runQueueContact() runQueueException() makeData() Signature @TestSetup private static void makeData() runQueueContact() Signature @IsTest private static void runQueueContact() runQueueException() Signature @IsTest private static void runQueueException()" }, { "title": "ActionPlansRedirectTest", "fileName": "ActionPlansRedirectTest.html", - "text": "ActionPlansRedirectTest Test for Redirect Visualforce Controller Signature @IsTest public class ActionPlansRedirectTest See ActionPlansRedirect Author David Schach Since 2022 ActionPlansRedirectTest Methods actionPlanChangeOwner() actionPlanTemplateChangeOwner() aPTaskRedirect() aPTTaskRedirect() makeData() actionPlanChangeOwner() Signature @IsTest private static void actionPlanChangeOwner() actionPlanTemplateChangeOwner() Signature @IsTest private static void actionPlanTemplateChangeOwner() aPTaskRedirect() Signature @IsTest private static void aPTaskRedirect() aPTTaskRedirect() Signature @IsTest private static void aPTTaskRedirect() makeData() Signature @TestSetup private static void makeData()" + "text": "ActionPlansRedirectTest Test for Redirect Visualforce Controller Signature @IsTest private class ActionPlansRedirectTest See ActionPlansRedirect Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlansRedirectTest Methods actionPlanChangeOwner() actionPlanTemplateChangeOwner() aPTaskRedirect() aPTTaskRedirect() makeData() actionPlanChangeOwner() Signature @IsTest private static void actionPlanChangeOwner() actionPlanTemplateChangeOwner() Signature @IsTest private static void actionPlanTemplateChangeOwner() aPTaskRedirect() Signature @IsTest private static void aPTaskRedirect() aPTTaskRedirect() Signature @IsTest private static void aPTTaskRedirect() makeData() Signature @TestSetup private static void makeData()" }, { "title": "ActionPlansSectionHeaderControllerTest", @@ -187,7 +187,7 @@ export default [ { "title": "ActionPlansUtilitiesTest", "fileName": "ActionPlansUtilitiesTest.html", - "text": "ActionPlansUtilitiesTest Signature @IsTest private class ActionPlansUtilitiesTest See ActionPlansUtilities Author David Schach Since 2022 ActionPlansUtilitiesTest Methods account() campaign() cancel() case() contact() contract() deleteActionPlans() doChatterPost(objectNames) doChatterPostPart1() doChatterPostPart2() lead() makeAppTask(ap) Helper method to create APTask__c record for an ActionPlan__c makeData() randomWord() relatedObjectId() saveMultiple() saveSingle() testObject(objectName) Pass in any object and create an Action Plan for that object utilitiesRecordTypes() account() Signature @IsTest private static void account() campaign() Signature @IsTest private static void campaign() cancel() Signature @IsTest private static void cancel() case() Signature @IsTest private static void case() contact() Signature @IsTest private static void contact() contract() Signature @IsTest private static void contract() deleteActionPlans() Signature @IsTest private static void deleteActionPlans() doChatterPost(objectNames) Signature private static void doChatterPost(List objectNames) doChatterPostPart1() Signature @IsTest private static void doChatterPostPart1() doChatterPostPart2() Signature @IsTest private static void doChatterPostPart2() lead() Signature @IsTest private static void lead() makeAppTask(ap) Helper method to create APTask__c record for an ActionPlan__c Signature private static APTask__c makeAppTask(ActionPlan__c ap) Parameters ap Type: ActionPlan__c The parent Action Plan Returns The test Action Plan Task Author David Schach makeData() Signature @TestSetup private static void makeData() randomWord() Signature @IsTest private static void randomWord() relatedObjectId() Signature @IsTest private static void relatedObjectId() saveMultiple() Signature @IsTest private static void saveMultiple() saveSingle() Signature @IsTest private static void saveSingle() testObject(objectName) Pass in any object and create an Action Plan for that object Signature private static Boolean testObject(String objectName) Parameters objectName Type: String The object name Returns Success at creating tasks for the Action Plan Author David Schach utilitiesRecordTypes() Signature @IsTest private static void utilitiesRecordTypes()" + "text": "ActionPlansUtilitiesTest Signature @IsTest private class ActionPlansUtilitiesTest See ActionPlansUtilities Author David Schach Since 2022 2023 System.assert to Assert class + error messages ActionPlansUtilitiesTest Methods account() campaign() cancel() case() contact() contract() deleteActionPlans() doChatterPost(objectNames) A method to enable testing creating a Chatter post for any of our usual standard objects doChatterPostPart1() doChatterPostPart2() lead() makeAppTask(ap) Helper method to create APTask__c record for an ActionPlan__c makeData() randomWord() relatedObjectId() saveMultiple() saveSingle() testObject(objectName, recordId) Pass in any object name(and its ID if a custom object) and create an Action Plan for that object Will be global in the next version so test code for custom objects can access it utilitiesRecordTypes() account() Signature @IsTest private static void account() campaign() Signature @IsTest private static void campaign() cancel() Signature @IsTest private static void cancel() case() Signature @IsTest private static void case() contact() Signature @IsTest private static void contact() contract() Signature @IsTest private static void contract() deleteActionPlans() Signature @IsTest private static void deleteActionPlans() doChatterPost(objectNames) A method to enable testing creating a Chatter post for any of our usual standard objects Signature private static void doChatterPost(List objectNames) Parameters objectNames Type: List The object we want to make a post for doChatterPostPart1() Signature @IsTest private static void doChatterPostPart1() doChatterPostPart2() Signature @IsTest private static void doChatterPostPart2() lead() Signature @IsTest private static void lead() makeAppTask(ap) Helper method to create APTask__c record for an ActionPlan__c Signature private static APTask__c makeAppTask(ActionPlan__c ap) Parameters ap Type: ActionPlan__c The parent Action Plan Returns The test Action Plan Task Author David Schach makeData() Signature @TestSetup private static void makeData() randomWord() Signature @IsTest private static void randomWord() relatedObjectId() Signature @IsTest private static void relatedObjectId() saveMultiple() Signature @IsTest private static void saveMultiple() saveSingle() Signature @IsTest private static void saveSingle() testObject(objectName, recordId) Pass in any object name(and its ID if a custom object) and create an Action Plan for that object Will be global in the next version so test code for custom objects can access it Signature public static Boolean testObject(String objectName, Id recordId) Parameters objectName Type: String The object name recordId Type: Id Pass in the Id of a custom object record so we can make an Action Plan for it Returns Success at creating tasks for the Action Plan Author David Schach utilitiesRecordTypes() Signature @IsTest private static void utilitiesRecordTypes()" }, { "title": "CanTheUserTest", diff --git a/docs/index.html b/docs/index.html index 7ce433cb..c52cb10e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -177,7 +177,7 @@ onclick="goToLocation('ActionPlansQueueableBuilderTest.html');"> ActionPlansQueueableBuilderTest

    • -
    • To Start Using an Object wit
    • Add the following code to the object trigger in before delete and after undelete contexts (removing the LabsActionPlans namespace if you're not using the managed package): -
      LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'Custom_Object__c' );
      +              
      LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' );
       
      -
    • +

      +

      Test Code for Additional Objects

      +

      + Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage (not a best-practice!) just make a test method + inserting and then deleting a record.
      Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet. +

      Adding a New Custom Object Action Plan button to the Action Plan object

      While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template. @@ -548,7 +553,7 @@

      Give it a label and name, such as "New MyObject Action Plan"
    • Display Type is List Button. Uncheck the list checkbox.
    • - Use the following format for the button (removing the LabsActionPlans namespace if you're not using the managed package): + Use the following format for the button (removing the LabsActionPlans__ namespace if you're not using the managed package):
      {!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType="CustomObject__c", refId=CustomObject__c.Id] )}
       
    • diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreateInvocableTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationControllerTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanDetailControllerTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateExportTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansObjectTriggersTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansPostInstallScriptTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansQueueableBuilderTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansRedirectTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/ActionPlansUtilitiesTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls-meta.xml diff --git a/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls b/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls rename to sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls diff --git a/sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls-meta.xml similarity index 100% rename from sfdx-source/LabsActionPlans/main/default/tests/CanTheUserTest.cls-meta.xml rename to sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls-meta.xml From eabc7804c540bc6c8edd9e2771fc9696e1d2e53f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 02:58:39 +0000 Subject: [PATCH 23/70] build(deps-dev): bump eslint from 8.34.0 to 8.35.0 (#4) Bumps [eslint](https://github.com/eslint/eslint) from 8.34.0 to 8.35.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.34.0...v8.35.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 63 ++++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3dbfa18e..f8cbd2e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@salesforce/eslint-plugin-lightning": "^1.0.0", "@salesforce/sfdx-lwc-jest": "^1.3.0", "auto-changelog": "^2.4.0", - "eslint": "^8.34.0", + "eslint": "^8.35.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "husky": "^8.0.3", @@ -784,9 +784,9 @@ "dev": true }, "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", + "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -855,6 +855,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", + "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -3705,12 +3714,13 @@ } }, "node_modules/eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", + "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.4.1", + "@eslint/eslintrc": "^2.0.0", + "@eslint/js": "8.35.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -3724,7 +3734,7 @@ "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", "espree": "^9.4.0", - "esquery": "^1.4.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -4150,9 +4160,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -10555,9 +10565,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", + "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -10607,6 +10617,12 @@ } } }, + "@eslint/js": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", + "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "dev": true + }, "@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -12787,12 +12803,13 @@ } }, "eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", + "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.4.1", + "@eslint/eslintrc": "^2.0.0", + "@eslint/js": "8.35.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -12806,7 +12823,7 @@ "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", "espree": "^9.4.0", - "esquery": "^1.4.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", @@ -13116,9 +13133,9 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dev": true, "requires": { "estraverse": "^5.1.0" diff --git a/package.json b/package.json index c44fee2c..d03325c7 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@salesforce/eslint-plugin-lightning": "^1.0.0", "@salesforce/sfdx-lwc-jest": "^1.3.0", "auto-changelog": "^2.4.0", - "eslint": "^8.34.0", + "eslint": "^8.35.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "husky": "^8.0.3", From 0ae955b8fc5056351c4c1f4ad66690fb56f53ea5 Mon Sep 17 00:00:00 2001 From: David Schach Date: Mon, 27 Feb 2023 15:41:30 -0800 Subject: [PATCH 24/70] build(changelog): instructions & tag prefix --- .auto-changelog | 2 +- doc-assets/README.md | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.auto-changelog b/.auto-changelog index b64f475c..d140077c 100644 --- a/.auto-changelog +++ b/.auto-changelog @@ -4,5 +4,5 @@ "unreleased": true, "commitLimit": 0, "hideCredit": true, - "tagPrefix": "" + "tagPrefix": "v" } diff --git a/doc-assets/README.md b/doc-assets/README.md index 555c6f13..f0cd2a24 100644 --- a/doc-assets/README.md +++ b/doc-assets/README.md @@ -1 +1,24 @@ -This directory contains files for generating the ApexDox documentation + + +# ApexDox Documentation Instructions + +Updating ApexDox happens in three parts. + +1. Run ApexDoxSetup.sh + ``` + . doc-assets/ApexDoxSetup.sh + ``` + +1. Run ApexDox + ``` + SHIFT + COMMAND + P, select ApexDox: Run + ``` + +1. Run ApexDox cleanup + ``` + npm run prettier:docs + ``` + +# Changelog Instructions + + From 42c6889df390a41195629f11d8453d429d64e769 Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 28 Feb 2023 09:49:52 -0800 Subject: [PATCH 25/70] feat: sfdx-scanner config --- .eslintignore | 1 + .sfdx-scanner/config.json | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 .sfdx-scanner/config.json diff --git a/.eslintignore b/.eslintignore index 5f7b681a..e0f243e1 100644 --- a/.eslintignore +++ b/.eslintignore @@ -13,4 +13,5 @@ **/aura/**/*.tokens **/aura/**/*.xml **/aura/**/*.app +**/ActionPlan_Resources/js/*.js .sfdx diff --git a/.sfdx-scanner/config.json b/.sfdx-scanner/config.json new file mode 100644 index 00000000..e74d5ffb --- /dev/null +++ b/.sfdx-scanner/config.json @@ -0,0 +1,20 @@ +{ + "engines": [ + { + "name": "eslint", + "targetPatterns": ["**/*.js", "!**/lwc/**/*.js", "!**/node_modules/**", "!**/bower_components/**", "!**/jquery*.js"], + "disabled": false + }, + { + "name": "eslint-lwc", + "targetPatterns": ["**/lwc/**/*.js", "!**/node_modules/**"], + "disabled": true + }, + { + "name": "CPD", + "targetPatterns": ["**/*.cls", "**/*.trigger", "**/*.java", "**/*.page", "**/*.component", "**/*.xml", "!**/node_modules/**", "!**/*-meta.xml"], + "disabled": true, + "minimumTokens": "100" + } + ] +} From 2dc940d771a07e82b4346c57b91997151d41d054 Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 28 Feb 2023 10:52:26 -0800 Subject: [PATCH 26/70] build(sfdx): revert to sfdx package version create --- scripts/packagedev/build.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/packagedev/build.sh b/scripts/packagedev/build.sh index 1bf8c39e..00ef9df4 100644 --- a/scripts/packagedev/build.sh +++ b/scripts/packagedev/build.sh @@ -15,7 +15,8 @@ npm run labsdevhub echo "set managed package" sed -i "" "s|\"namespace\": \"\"|\"namespace\": \"LabsActionPlans\"|" sfdx-project.json -sf package version create --code-coverage --package ActionPlans --path sfdx-source/LabsActionPlans --installation-key-bypass --wait 20 +#sf package version create --code-coverage --package ActionPlans --path sfdx-source/LabsActionPlans --installation-key-bypass --wait 20 +sfdx force:package:version:create --codecoverage --package "Action Plans" --path sfdx-source/LabsActionPlans --installationkeybypass --wait 20 echo "unset namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json From 6eb588a4439d1787e613995f4dbe6e9c808df7e1 Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 28 Feb 2023 12:01:17 -0800 Subject: [PATCH 27/70] revert(API): use 56.0 to avoid GVS bug chore: create version 4.3.0-9 --- sfdx-project.json | 67 ++++++++++--------- .../ActionPlanCreateInvocable.cls-meta.xml | 2 +- .../ActionPlanCreationController.cls-meta.xml | 2 +- .../ActionPlanDetailController.cls-meta.xml | 2 +- ...lanTemplateCreationController.cls-meta.xml | 2 +- ...nPlanTemplateDetailController.cls-meta.xml | 2 +- .../ActionPlanTemplateExport.cls-meta.xml | 2 +- .../ActionPlanTemplateImport.cls-meta.xml | 2 +- ...nPlanTemplateImportController.cls-meta.xml | 2 +- .../ActionPlansBuilderUtilities.cls-meta.xml | 2 +- ...ansCreateMultipleAPsExtension.cls-meta.xml | 2 +- ...lansDeleteMultipleAPExtension.cls-meta.xml | 2 +- .../ActionPlansPostInstallScript.cls-meta.xml | 2 +- .../ActionPlansQueueableBuilder.cls-meta.xml | 2 +- .../classes/ActionPlansRedirect.cls-meta.xml | 2 +- ...nPlansSectionHeaderController.cls-meta.xml | 2 +- ...tionPlansTaskTriggerUtilities.cls-meta.xml | 2 +- .../ActionPlansTestUtilities.cls-meta.xml | 2 +- .../ActionPlansTriggerHandlers.cls-meta.xml | 2 +- .../classes/ActionPlansUtilities.cls-meta.xml | 2 +- .../default/classes/CanTheUser.cls-meta.xml | 2 +- ...ActionPlanCreateInvocableTest.cls-meta.xml | 2 +- ...ionPlanCreationControllerTest.cls-meta.xml | 2 +- ...onPlanCreationTaskWrapperTest.cls-meta.xml | 2 +- ...ctionPlanDetailControllerTest.cls-meta.xml | 2 +- ...PlanTemplateCreationCntrlTest.cls-meta.xml | 2 +- ...onPlanTemplateDetailCntrlTest.cls-meta.xml | 2 +- .../ActionPlanTemplateExportTest.cls-meta.xml | 2 +- ...onPlanTemplateImportCntrlTest.cls-meta.xml | 2 +- ...PlansCreateMultipleAPsExtTest.cls-meta.xml | 2 +- ...nPlansDeleteMultipleAPExtTest.cls-meta.xml | 2 +- ...ActionPlansObjectTriggersTest.cls-meta.xml | 2 +- ...ionPlansPostInstallScriptTest.cls-meta.xml | 2 +- ...tionPlansQueueableBuilderTest.cls-meta.xml | 2 +- .../ActionPlansRedirectTest.cls-meta.xml | 2 +- ...nsSectionHeaderControllerTest.cls-meta.xml | 2 +- ...PlansTaskTriggerUtilitiesTest.cls-meta.xml | 2 +- .../ActionPlansUtilitiesTest.cls-meta.xml | 2 +- .../classes/tests/CanTheUserTest.cls-meta.xml | 2 +- .../APLightningLookup.component-meta.xml | 2 +- .../components/APMessage.component-meta.xml | 2 +- .../APSectionHeader.component-meta.xml | 2 +- .../ActionPlanAPOwnerChange.page-meta.xml | 2 +- .../ActionPlanAPTOwnerChange.page-meta.xml | 2 +- .../pages/ActionPlanCreation.page-meta.xml | 2 +- .../ActionPlanDeleteMultipleAPs.page-meta.xml | 2 +- .../pages/ActionPlanDetail.page-meta.xml | 2 +- .../ActionPlanTaskOverride.page-meta.xml | 2 +- .../ActionPlanTemplateCreation.page-meta.xml | 2 +- .../ActionPlanTemplateDetail.page-meta.xml | 2 +- .../ActionPlanTemplateExport.page-meta.xml | 2 +- .../ActionPlanTemplateImport.page-meta.xml | 2 +- ...tionPlanTemplateTaskOverride.page-meta.xml | 2 +- ...onPlansCreateMultipleAccount.page-meta.xml | 2 +- ...nPlansCreateMultipleCampaign.page-meta.xml | 2 +- ...ctionPlansCreateMultipleCase.page-meta.xml | 2 +- ...onPlansCreateMultipleContact.page-meta.xml | 2 +- ...nPlansCreateMultipleContract.page-meta.xml | 2 +- ...ctionPlansCreateMultipleLead.page-meta.xml | 2 +- ...ansCreateMultipleOpportunity.page-meta.xml | 2 +- .../pages/ActionPlansHome.page-meta.xml | 2 +- .../triggers/APAccount.trigger-meta.xml | 2 +- .../triggers/APCampaign.trigger-meta.xml | 2 +- .../default/triggers/APCase.trigger-meta.xml | 2 +- .../triggers/APContact.trigger-meta.xml | 2 +- .../triggers/APContract.trigger-meta.xml | 2 +- .../default/triggers/APLead.trigger-meta.xml | 2 +- .../triggers/APOpportunity.trigger-meta.xml | 2 +- .../default/triggers/APTask.trigger-meta.xml | 2 +- .../triggers/ActionPlan.trigger-meta.xml | 2 +- .../triggers/ActionPlanTask.trigger-meta.xml | 2 +- .../ActionPlanTemplate.trigger-meta.xml | 2 +- .../ActionPlanTemplateTask.trigger-meta.xml | 2 +- ..._Customer_Onboarding_Actions.flow-meta.xml | 2 +- ..._Customer_Onboarding_Actions.flow-meta.xml | 2 +- 75 files changed, 108 insertions(+), 107 deletions(-) diff --git a/sfdx-project.json b/sfdx-project.json index 3cafd56b..f92f0ba9 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -1,36 +1,37 @@ { - "packageDirectories": [ - { - "path": "sfdx-source/LabsActionPlans", - "default": true, - "package": "Action Plans", - "versionName": "Spring 2023 v4.3", - "versionNumber": "4.3.0.NEXT", - "ancestorVersion": "4.2.0", - "releaseNotesUrl": "https://github.com/SalesforceLabs/ActionPlansV4/blob/main/README.md", - "definitionFile": "config/install-scratch-def.json", - "versionDescription": "Action Plans now suppports Tasks owned by Queues and Professional Edition", - "postInstallScript": "ActionPlansPostInstallScript", - "postInstallUrl": "https://salesforcelabs.github.io/ActionPlansV4/" - }, - { - "path": "sfdx-source/unmanaged" - } - ], - "pushPackageDirectoriesSequentially": true, - "name": "Action Plans", - "namespace": "", - "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "57.0", - "packageAliases": { - "Action Plans": "0Ho5f000000oLlrCAE", - "ActionPlans": "0Ho5f000000oLlrCAE", - "Action Plans@4.1.0-1": "04t5f000000rJgsAAE", - "Action Plans@4.2.0-7": "04t5f000000rK9EAAU", - "Action Plans@4.2.1-5": "04t5f000000rKJ9AAM", - "Action Plans@4.3.0-3": "04t5f000000rL4EAAU", - "Action Plans@4.3.0-4": "04t5f000000rL4JAAU", - "Action Plans@4.3.0-7": "04t5f000000rL7hAAE", - "Action Plans@4.3.0-8": "04t5f000000rL9JAAU" + "packageDirectories": [ + { + "path": "sfdx-source/LabsActionPlans", + "default": true, + "package": "Action Plans", + "versionName": "Spring 2023 v4.3", + "versionNumber": "4.3.0.NEXT", + "ancestorVersion": "4.2.0", + "releaseNotesUrl": "https://github.com/SalesforceLabs/ActionPlansV4/blob/main/README.md", + "definitionFile": "config/install-scratch-def.json", + "versionDescription": "Action Plans now suppports Tasks owned by Queues and Professional Edition", + "postInstallScript": "ActionPlansPostInstallScript", + "postInstallUrl": "https://salesforcelabs.github.io/ActionPlansV4/" + }, + { + "path": "sfdx-source/unmanaged" } + ], + "pushPackageDirectoriesSequentially": true, + "name": "Action Plans", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "56.0", + "packageAliases": { + "Action Plans": "0Ho5f000000oLlrCAE", + "ActionPlans": "0Ho5f000000oLlrCAE", + "Action Plans@4.1.0-1": "04t5f000000rJgsAAE", + "Action Plans@4.2.0-7": "04t5f000000rK9EAAU", + "Action Plans@4.2.1-5": "04t5f000000rKJ9AAM", + "Action Plans@4.3.0-3": "04t5f000000rL4EAAU", + "Action Plans@4.3.0-4": "04t5f000000rL4JAAU", + "Action Plans@4.3.0-7": "04t5f000000rL7hAAE", + "Action Plans@4.3.0-8": "04t5f000000rL9JAAU", + "Action Plans@4.3.0-9": "04t5f000000rM1zAAE" + } } \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls-meta.xml index a9fd6e9a..1248daa8 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls-meta.xml b/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls-meta.xml index 754ecb15..fbbad0af 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component-meta.xml b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component-meta.xml index 07d28f45..333e0177 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 diff --git a/sfdx-source/LabsActionPlans/main/default/components/APMessage.component-meta.xml b/sfdx-source/LabsActionPlans/main/default/components/APMessage.component-meta.xml index 153cf25a..4437b500 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APMessage.component-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/components/APMessage.component-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 diff --git a/sfdx-source/LabsActionPlans/main/default/components/APSectionHeader.component-meta.xml b/sfdx-source/LabsActionPlans/main/default/components/APSectionHeader.component-meta.xml index 422c2b4f..67a4d042 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APSectionHeader.component-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/components/APSectionHeader.component-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPOwnerChange.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPOwnerChange.page-meta.xml index ce52a348..6a871a33 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPOwnerChange.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPOwnerChange.page-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPTOwnerChange.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPTOwnerChange.page-meta.xml index b787b092..bc5cbfa4 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPTOwnerChange.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanAPTOwnerChange.page-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 \ No newline at end of file diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page-meta.xml index dc809614..ccfe751f 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Creation and edit views of an Action Plan. diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDeleteMultipleAPs.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDeleteMultipleAPs.page-meta.xml index 87ba5772..ad17ebd8 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDeleteMultipleAPs.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDeleteMultipleAPs.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Button on Action Plan list view for deleting multiple records diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDetail.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDetail.page-meta.xml index 3a4f0da8..1d8e4e63 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDetail.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanDetail.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Detail view of an Action Plan. diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTaskOverride.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTaskOverride.page-meta.xml index f3da9711..626c7176 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTaskOverride.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTaskOverride.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Redirect AP Task page to the Action Plan diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateCreation.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateCreation.page-meta.xml index b58b4532..5a7189eb 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateCreation.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateCreation.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Creation page for Action Plan Templates. diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateDetail.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateDetail.page-meta.xml index 76c798a1..f5e11042 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateDetail.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateDetail.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Detail page for Action Plan Templates. diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateExport.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateExport.page-meta.xml index 8e88a089..89ac304c 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateExport.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateExport.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Export Action Plan to XML format and save as a Document diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateImport.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateImport.page-meta.xml index 810e0ec9..1b8cce2c 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateImport.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateImport.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Import Action Plan Template as XML diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateTaskOverride.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateTaskOverride.page-meta.xml index 5c841fde..9bd11cc2 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateTaskOverride.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanTemplateTaskOverride.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false Redirect AP Template Task page to the Action Plan diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleAccount.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleAccount.page-meta.xml index 80f2c947..a7c47644 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleAccount.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleAccount.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCampaign.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCampaign.page-meta.xml index 5d45685c..5a0f2875 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCampaign.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCampaign.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCase.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCase.page-meta.xml index 9435bf80..8af0b225 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCase.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleCase.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContact.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContact.page-meta.xml index 55ad6d1f..c7b046ea 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContact.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContact.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContract.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContract.page-meta.xml index 90614a85..1ca230e1 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContract.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleContract.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleLead.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleLead.page-meta.xml index a02921e0..7abd247b 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleLead.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleLead.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleOpportunity.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleOpportunity.page-meta.xml index ce6093ca..6459f71c 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleOpportunity.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansCreateMultipleOpportunity.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false List button to replace JavaScript buttons diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansHome.page-meta.xml b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansHome.page-meta.xml index 095d2481..0b13d4da 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansHome.page-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlansHome.page-meta.xml @@ -1,6 +1,6 @@ - 57.0 + 56.0 true false List views of Action Plans and Action Plan Templates with tabs diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APAccount.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APAccount.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APAccount.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APAccount.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APCampaign.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APCampaign.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APCampaign.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APCampaign.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APCase.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APCase.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APCase.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APCase.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APContact.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APContact.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APContact.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APContact.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APContract.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APContract.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APContract.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APContract.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APLead.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APLead.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APLead.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APLead.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APOpportunity.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APOpportunity.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APOpportunity.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APOpportunity.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/APTask.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/APTask.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/APTask.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/APTask.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlan.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlan.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlan.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlan.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTask.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTask.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTask.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTask.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplate.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplate.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplate.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplate.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplateTask.trigger-meta.xml b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplateTask.trigger-meta.xml index b01a1f0b..24523ca6 100644 --- a/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplateTask.trigger-meta.xml +++ b/sfdx-source/LabsActionPlans/main/default/triggers/ActionPlanTemplateTask.trigger-meta.xml @@ -1,5 +1,5 @@ - 57.0 + 56.0 Active diff --git a/sfdx-source/unmanaged/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml b/sfdx-source/unmanaged/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml index 941a35f5..a3d16333 100644 --- a/sfdx-source/unmanaged/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml +++ b/sfdx-source/unmanaged/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml @@ -34,7 +34,7 @@ true - 57.0 + 56.0 Sample Flow - change Account Type so it contains 'Customer' and if New Customer Onboarding Action Plan Template exists, it will be created as an Action Plan Formula to create a custom Action Plan Name diff --git a/sfdx-source/unmanagedExtension/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml b/sfdx-source/unmanagedExtension/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml index 9d032ecd..08409cfe 100644 --- a/sfdx-source/unmanagedExtension/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml +++ b/sfdx-source/unmanagedExtension/main/default/flows/New_Customer_Onboarding_Actions.flow-meta.xml @@ -34,7 +34,7 @@ true - 57.0 + 56.0 Sample Flow - change Account Type so it contains 'Customer' and if New Customer Onboarding Action Plan Template exists, it will be created as an Action Plan Formula to create a custom Action Plan Name From 2b9f999452002ff43152102cbb85348dbd0e1d7e Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 28 Feb 2023 13:30:14 -0800 Subject: [PATCH 28/70] docs(README): add image descriptions --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2df39499..3e7465e7 100644 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ Note: The Apex used in Flows or via triggers does not require special permission ```apex LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' ); ``` -![](doc-assets/readme/ActionPlanFieldSet.png) +![Field set on Action Plan with all related objects available and only some selected](doc-assets/readme/ActionPlanFieldSet.png) ## Test Code for Additional Objects @@ -229,25 +229,25 @@ If your org uses Task Record Types, you must specify which Record Type to use fo 1. Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the "Create Account Action Plans" button. - ![](doc-assets/readme/Select-Accounts.png) + ![List view of Accounts with 50 selected. The "Create Account Action Plans" button is highlighted](doc-assets/readme/Select-Accounts.png) 1. Select the template you want to use by typing the name on the lookup and clicking on it. - ![](doc-assets/readme/Choose-template-step1.png) + ![Action Plan creation screen with 50 sample records indicated on the page layout](doc-assets/readme/Choose-template-step1.png) 1. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. - ![](doc-assets/readme/Choose-template-step2.png) + ![Filled-in Action Plan creation screen](doc-assets/readme/Choose-template-step2.png) 1. Save the Action Plan. Note: Action Plan creation is handled by a queueable (asynchronous) process. It can take a couple of minutes to be able to view all created records. - ![](doc-assets/readme/ActionPlan-Detail.png) + ![Single Action Plan detail screen](doc-assets/readme/ActionPlan-Detail.png) 1. Verify the Action Plan and the tasks. 1. Complete the first task on the Action Plan. - Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete. + Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete. (A Contact related list is shown here, but this applies equally to Accounts.) - ![](doc-assets/readme/AccountActionPlan-Detail.png) + ![Contact related lists showing Action Plans for the Contact and one open and one closed task](doc-assets/readme/AccountActionPlan-Detail.png) # Task notifications for Flow-created Action Plans @@ -268,7 +268,7 @@ If the user has enabled task notification, then those will be sent when an Actio # Queues -Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the createdTasks (which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. +Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the created Tasks (which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. # Automate Action Plan Creation @@ -277,7 +277,7 @@ Action Plan Tasks cannot be assigned to queues, so if the parent record is owned Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template. Days from trigger to start Action Plan is optional (and defaults to 0). The first task will be due the number of days (specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. -![](doc-assets/readme/FlowAction.png) +![Flow action setup screen](doc-assets/readme/FlowAction.png) The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. @@ -373,4 +373,4 @@ Import is also simple. Navigate to the "Import Template" tab. Select the file yo ## (Optional) Sample Action Plan Template Import -This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download [New Customer Onboarding](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data/Export%20-%20New%20Customer%20Onboarding.xml) or [Trade Show Follow Up](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data/Trade%20Show%20Follow%20Up.xml) from GitHub, or you can find it in this SFDX project in the `data` folder. +This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download [New Customer Onboarding](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data/Export%20-%20New%20Customer%20Onboarding.xml) or [Trade Show Follow Up](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data/Trade%20Show%20Follow%20Up.xml) from GitHub, or you can find it in this SFDX project in the [`data`](https://github.com/SalesforceLabs/ActionPlansV4/tree/main/data) folder. From 4910af9d9714cb57ce662e0057c00a97a5897e3f Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 28 Feb 2023 15:47:02 -0800 Subject: [PATCH 29/70] docs(ApexDox): include Installation & Changelog --- INSTALLATION.md | 57 +- README.md | 10 +- apexdox.yml | 11 +- doc-assets/ApexDoxSetup.sh | 22 +- doc-assets/INSTALLATION.html | 51 +- doc-assets/README.html | 34 +- doc-assets/changelog.html | 60 ++ docs/ActionPlanCreateInvocable.html | 14 +- docs/ActionPlanCreateInvocableTest.html | 30 +- docs/ActionPlanCreationController.html | 186 +++--- docs/ActionPlanCreationControllerTest.html | 52 +- docs/ActionPlanCreationTaskWrapperTest.html | 18 +- docs/ActionPlanDetailController.html | 46 +- docs/ActionPlanDetailControllerTest.html | 20 +- docs/ActionPlanTemplateCreationCntrlTest.html | 40 +- .../ActionPlanTemplateCreationController.html | 80 +-- docs/ActionPlanTemplateDetailCntrlTest.html | 18 +- docs/ActionPlanTemplateDetailController.html | 28 +- docs/ActionPlanTemplateExport.html | 18 +- docs/ActionPlanTemplateExportTest.html | 8 +- docs/ActionPlanTemplateImport.html | 28 +- docs/ActionPlanTemplateImportCntrlTest.html | 36 +- docs/ActionPlanTemplateImportController.html | 8 +- docs/ActionPlansBuilderUtilities.html | 32 +- docs/ActionPlansCreateMultipleAPsExtTest.html | 6 +- ...ActionPlansCreateMultipleAPsExtension.html | 10 +- docs/ActionPlansDeleteMultipleAPExtTest.html | 12 +- .../ActionPlansDeleteMultipleAPExtension.html | 10 +- docs/ActionPlansObjectTriggersTest.html | 26 +- docs/ActionPlansPostInstallScript.html | 10 +- docs/ActionPlansPostInstallScriptTest.html | 4 +- docs/ActionPlansQueueableBuilder.html | 8 +- docs/ActionPlansQueueableBuilderTest.html | 8 +- docs/ActionPlansRedirect.html | 24 +- docs/ActionPlansRedirectTest.html | 12 +- docs/ActionPlansSectionHeaderController.html | 16 +- ...ctionPlansSectionHeaderControllerTest.html | 12 +- docs/ActionPlansTaskTriggerUtilities.html | 26 +- docs/ActionPlansTaskTriggerUtilitiesTest.html | 24 +- docs/ActionPlansTestUtilities.html | 60 +- docs/ActionPlansTriggerHandlers.html | 36 +- docs/ActionPlansUtilities.html | 110 ++-- docs/ActionPlansUtilitiesTest.html | 40 +- docs/CanTheUser.html | 60 +- docs/CanTheUserTest.html | 34 +- docs/assets/INSTALLATION.html | 148 ----- docs/assets/search-idx.js | 12 +- docs/changelog.html | 468 +++++++++++++++ docs/index.html | 52 +- docs/installation.html | 562 ++++++++++++++++++ 50 files changed, 1827 insertions(+), 870 deletions(-) create mode 100644 doc-assets/changelog.html delete mode 100644 docs/assets/INSTALLATION.html create mode 100644 docs/changelog.html create mode 100644 docs/installation.html diff --git a/INSTALLATION.md b/INSTALLATION.md index b37d7534..b26efa4a 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -28,23 +28,23 @@ Follow these instructions to deploy Action Plans to your org. 1. If you haven't already done so, authorize your hub org and provide it with an alias (**myhuborg** in the command below): - ``` + ```bash sfdx auth:web:login -d -a myhuborg ``` 1. Clone this repository: - ``` + ```bash git clone https://github.com/SalesforceLabs/ActionPlansV4 cd ActionPlansV4 ``` 1. From the terminal window, run the installation script - ``` + ```bash npm run-script scratchorg ``` or - ``` + ```bash . scripts/scratchorg.sh ``` @@ -59,13 +59,13 @@ Start from a brand-new environment to avoid conflicts with previous work you may 1. Authorize your org and provide it with an alias (**myorg** in the command below): - ``` + ```bash sfdx auth:web:login -s -a myorg ``` 1. Clone this repository: - ``` + ```bash git clone https://github.com/SalesforceLabs/ActionPlansV4 cd ActionPlansV4 ``` @@ -73,7 +73,7 @@ Start from a brand-new environment to avoid conflicts with previous work you may 1. If you are setting up a Developer Edition: go to **Setup**, and under **My Domain**, [register a My Domain](https://help.salesforce.com/articleView?id=domain_name_setup.htm&type=5). Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first. 1. To run all the next steps at once, run this [command](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/scripts/unmanaged.sh) in the terminal: - ``` + ```bash . scripts/unmanaged.sh ``` The org will open. That's it! @@ -82,25 +82,25 @@ Start from a brand-new environment to avoid conflicts with previous work you may 1. Run this command to deploy the app. - ``` - sf deploy metadata --source-dir sfdx-source/LabsActionPlans + ```bash + sf deploy metadata --source-dir sfdx-source/LabsActionPlans ``` 2. Assign the `Action_Plans_Admin` permission set to the admin user. - ``` + ```bash sf org assign permset --name Action_Plans_Admin ``` 3. (Optional) [Load sample metadata](#optional-installation-instructions) (see below) - ``` - sf deploy metadata --source-dir sfdx-source/unmanaged + ```bash + sf deploy metadata --source-dir sfdx-source/unmanaged ``` 4. If your org isn't already open, open it now: - ``` + ```bash sf org open --target-org myorg ``` @@ -118,7 +118,7 @@ This repository contains several files that are relevant if you want to add samp ``` - To create a sample Action Plan Template for Account onboarding, run the following: - ``` + ```bash sfdx force:apex:execute -f ./data/sample-data.apex ``` - To create @@ -126,20 +126,20 @@ This repository contains several files that are relevant if you want to add samp - a sample Account layout - a sample Task layout - a sample report on open Action Plan-related Tasks - ``` - sf deploy metadata --source-dir sfdx-source/unmanaged + ```bash + sf deploy metadata --source-dir sfdx-source/unmanaged ``` - You can also create other sample Account and Contact records by running the following command: - ``` + ```bash sf data import tree --plan ./data/action-plan-data-plan.json ``` ### Data/Metadata Import (Optional - ONLY if using the AppExchange managed package) - When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following: - ``` + ```bash sfdx force:apex:execute -f ./data/sample-data-managed.apex ``` - To create @@ -147,12 +147,12 @@ This repository contains several files that are relevant if you want to add samp - a sample Account layout - a sample Task layout - a sample report on open Action Plan-related Tasks - ``` - sf deploy metadata --source-dir sfdx-source/unmanagedExtension + ```bash + sf deploy metadata --source-dir sfdx-source/unmanagedExtension ``` - You can also create other sample Account and Contact records by running the following command: - ``` + ```bash sf data import tree --plan ./data/action-plan-data-plan.json ``` @@ -162,22 +162,21 @@ This repository contains several files that are relevant if you want to add samp [Prettier Apex](https://github.com/dangmai/prettier-plugin-apex) is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow [these instructions](https://developer.salesforce.com/tools/vscode/en/user-guide/prettier) from the Salesforce Extensions site. -### Code linting + ### Pre-commit hook -This repository also comes with a [package.json](./package.json) file that makes it easy to set up a pre-commit hook that enforces code formatting and linting by running Prettier and ESLint every time you `git commit` changes. +This repository also comes with a [package.json](./package.json) file that makes it easy to set up a pre-commit hook that enforces code formatting by running Prettier every time you `git commit` changes. -To set up the formatting and linting pre-commit hook: +To set up the formatting pre-commit hook: 1. Install [Node.js](https://nodejs.org) if you haven't already done so -1. Run `npm install` in your project's root folder to install the Husky, ESLint, and Prettier modules (Note: Mac users should verify that Xcode command line tools are installed before running this command.) +2. Run `npm install` in your project's root folder to install the Husky and Prettier modules (Note: Mac users should verify that Xcode command line tools are installed before running this command.) -Husky will now run Prettier and ESLint automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. The commit will fail if linting errors are detected. You can also run the formatting and linting from the command line using the following commands (check out [package.json](./package.json) for the full list): +Husky will now run Prettier automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. You can also run the formatting from the command line using the following command (check out [package.json](./package.json) for the full list): -``` -npm run lint:lwc +```bash npm run prettier ``` diff --git a/README.md b/README.md index 3e7465e7..5123e015 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # Action Plans -[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Latest Commit](https://github.com/SalesforceLabs/ActionPlansV4/actions/workflows/ci.yml/badge.svg)](https://github.com/SalesforceLabs/ActionPlansV4/actions/workflows/ci.yml) [![Latest Pull Request](https://github.com/SalesforceLabs/ActionPlansV4/actions/workflows/pr.yml/badge.svg)](https://github.com/SalesforceLabs/ActionPlansV4/actions/workflows/pr.yml) [![codecov](https://codecov.io/gh/salesforcelabs/actionplansv4/branch/main/graph/badge.svg?token=9BD97HKVUI)](https://codecov.io/gh/salesforcelabs/actionplansv4) [![Twitter](https://img.shields.io/twitter/follow/salesforce_labs.svg?style=social)](https://twitter.com/salesforce_labs) +[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Latest Commit](https://github.com/SalesforceLabs/ActionPlansV4/actions/workflows/ci.yml/badge.svg)](https://github.com/SalesforceLabs/ActionPlansV4/actions/workflows/ci.yml) [![Latest Pull Request](https://github.com/SalesforceLabs/ActionPlansV4/actions/workflows/pr.yml/badge.svg)](https://github.com/SalesforceLabs/ActionPlansV4/actions/workflows/pr.yml) [![codecov](https://codecov.io/gh/salesforcelabs/actionplansv4/branch/main/graph/badge.svg?token=9BD97HKVUI)](https://codecov.io/gh/salesforcelabs/actionplansv4) [![Twitter](https://img.shields.io/twitter/follow/appexchange.svg?style=social)](https://twitter.com/appexchange) -## [Changelog](./CHANGELOG.md) +## [Changelog](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/CHANGELOG.md) # Action Plans Installation and Setup -## Please follow installation instructions, shown on the **[Installation page](./INSTALLATION.md)** +## Please follow installation instructions, shown on the **[Installation page](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/INSTALLATION.md)** -### [AppExchange](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/INSTALLATION.md#appexchange-managed-package---recommended) +### [AppExchange - Recommended](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/INSTALLATION.md#appexchange-managed-package---recommended) - [AppExchange Listing](https://appexchange.salesforce.com/appxListingDetail?listingId=a0N4V00000Gg6NVUAZ) - [Post-intall extras](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/INSTALLATION.md#data-import-optional---only-if-using-the-appexchange-managed-package) @@ -373,4 +373,4 @@ Import is also simple. Navigate to the "Import Template" tab. Select the file yo ## (Optional) Sample Action Plan Template Import -This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download [New Customer Onboarding](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data/Export%20-%20New%20Customer%20Onboarding.xml) or [Trade Show Follow Up](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data/Trade%20Show%20Follow%20Up.xml) from GitHub, or you can find it in this SFDX project in the [`data`](https://github.com/SalesforceLabs/ActionPlansV4/tree/main/data) folder. +This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download [New Customer Onboarding](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data/Export%20-%20New%20Customer%20Onboarding.xml) or [Trade Show Follow Up](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data/Trade%20Show%20Follow%20Up.xml) from GitHub, or you can find it in this SFDX project in the [`data`](https://github.com/SalesforceLabs/ActionPlansV4/blob/main/data) folder. diff --git a/apexdox.yml b/apexdox.yml index 0fb73daa..1af1b726 100644 --- a/apexdox.yml +++ b/apexdox.yml @@ -1,9 +1,9 @@ engine: source: - path: '${workspaceFolder}/sfdx-source/LabsActionPlans/main/default/classes' - sourceUrl: https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes + sourceUrl: https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes - path: '${workspaceFolder}/sfdx-source/LabsActionPlans/main/default/classes/tests' - sourceUrl: https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests + sourceUrl: https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests targetDirectory: '${workspaceFolder}/docs' #excludes: # - "*Test.cls" @@ -20,8 +20,9 @@ engine: #- webService - testMethod homePagePath: '${workspaceFolder}/doc-assets/readme.html' - #pages: - #- '${workspaceFolder}/doc-assets/Installation.html' + pages: + - '${workspaceFolder}/doc-assets/installation.html' + - '${workspaceFolder}/doc-assets/changelog.html' assets: - '${workspaceFolder}/doc-assets/logo.png' - '${workspaceFolder}/doc-assets/favicon.png' @@ -43,7 +44,7 @@ engine: - '${workspaceFolder}/doc-assets/highlight.css' - '${workspaceFolder}/doc-assets/highlight.js' - '${workspaceFolder}/doc-assets/index.js' - - '${workspaceFolder}/doc-assets/INSTALLATION.html' + port: 8088 docblock: alignItems: true diff --git a/doc-assets/ApexDoxSetup.sh b/doc-assets/ApexDoxSetup.sh index c1c3663c..607671b1 100644 --- a/doc-assets/ApexDoxSetup.sh +++ b/doc-assets/ApexDoxSetup.sh @@ -1,17 +1,21 @@ #!/usr/bin/env sh -printf '' > "doc-assets/README.html" -echo >> "doc-assets/README.html" -npx marked -i README.md --breaks >> "doc-assets/README.html" +printf '' > "doc-assets/readme.html" +echo >> "doc-assets/readme.html" +npx marked -i README.md --breaks >> "doc-assets/readme.html" -sed -i '' 's|href="./|target="_blank" href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/|g' doc-assets/README.html +sed -i '' 's|href="./|target="_blank" href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/|g' doc-assets/readme.html +sed -i '' 's|src="doc-assets/readme|class="readmeimage" src="assets|g' doc-assets/readme.html +sed -i '' 's|https://github.com/SalesforceLabs/ActionPlansV4/blob/main/INSTALLATION.md|./installation.html|g' doc-assets/readme.html +sed -i '' 's|https://github.com/SalesforceLabs/ActionPlansV4/blob/main/CHANGELOG.md|./changelog.html|g' doc-assets/readme.html -sed -i '' 's|src="doc-assets/readme|class="readmeimage" src="assets|g' doc-assets/README.html +printf '' > "doc-assets/installation.html" +echo >> "doc-assets/installation.html" +npx marked -i INSTALLATION.md --breaks >> "doc-assets/installation.html" -printf '' > "doc-assets/INSTALLATION.html" -echo >> "doc-assets/INSTALLATION.html" -npx marked -i INSTALLATION.md --breaks >> "doc-assets/INSTALLATION.html" -sed -i '' 's|https://github.com/SalesforceLabs/ActionPlansV4/blob/main/INSTALLATION.md|assets/INSTALLATION.html|g' docs/index.html +printf '' > "doc-assets/changelog.html" +echo >> "doc-assets/changelog.html" +npx marked -i CHANGELOG.md --breaks >> "doc-assets/changelog.html" . doc-assets/updateHighlight.sh \ No newline at end of file diff --git a/doc-assets/INSTALLATION.html b/doc-assets/INSTALLATION.html index 5a4aee37..e8c1ddcd 100644 --- a/doc-assets/INSTALLATION.html +++ b/doc-assets/INSTALLATION.html @@ -21,19 +21,19 @@

      Installing the App using a Scrat

  • If you haven't already done so, authorize your hub org and provide it with an alias (myhuborg in the command below):

    -
    sfdx auth:web:login -d -a myhuborg
    +
    sfdx auth:web:login -d -a myhuborg
     
  • Clone this repository:

    -
    git clone https://github.com/SalesforceLabs/ActionPlansV4
    +
    git clone https://github.com/SalesforceLabs/ActionPlansV4
     cd ActionPlansV4
     
  • From the terminal window, run the installation script

    -
    npm run-script scratchorg
    +
    npm run-script scratchorg
     

    or

    -
    . scripts/scratchorg.sh
    +
    . scripts/scratchorg.sh
     
  • That's it!

    @@ -44,36 +44,36 @@

    sfdx auth:web:login -s -a myorg

  • Clone this repository:

    -
    git clone https://github.com/SalesforceLabs/ActionPlansV4
    +
    git clone https://github.com/SalesforceLabs/ActionPlansV4
     cd ActionPlansV4
     
  • If you are setting up a Developer Edition: go to Setup, and under My Domain, register a My Domain. Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first.

  • To run all the next steps at once, run this command in the terminal:

    -
    . scripts/unmanaged.sh
    +
    . scripts/unmanaged.sh
     

    The org will open. That's it!

    Or run these steps one by one

    1. Run this command to deploy the app.

      -
      sf deploy metadata  --source-dir sfdx-source/LabsActionPlans
      +
      sf deploy metadata --source-dir sfdx-source/LabsActionPlans
       
    2. Assign the Action_Plans_Admin permission set to the admin user.

      -
      sf org assign permset --name Action_Plans_Admin
      +
      sf org assign permset --name Action_Plans_Admin
       
    3. (Optional) Load sample metadata (see below)

      -
      sf deploy metadata  --source-dir sfdx-source/unmanaged
      +
      sf deploy metadata --source-dir sfdx-source/unmanaged
       
    4. If your org isn't already open, open it now:

      -
      sf org open --target-org myorg
      +
      sf org open --target-org myorg
       
    @@ -90,7 +90,7 @@

    sfdx force:apex:execute -f ./data/sample-data.apex

  • To create

    @@ -100,18 +100,18 @@
  • You can also create other sample Account and Contact records by running the following command:

    -
    sf data import tree --plan ./data/action-plan-data-plan.json
    +
    sf data import tree --plan ./data/action-plan-data-plan.json
     
  • Data/Metadata Import (Optional - ONLY if using the AppExchange managed package)

    • When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following:

      -
      sfdx force:apex:execute -f ./data/sample-data-managed.apex
      +
      sfdx force:apex:execute -f ./data/sample-data-managed.apex
       
    • To create

      @@ -121,28 +121,29 @@
    • You can also create other sample Account and Contact records by running the following command:

      -
      sf data import tree --plan ./data/action-plan-data-plan.json 
      +
      sf data import tree --plan ./data/action-plan-data-plan.json 
       

    Code formatting

    Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the Prettier formatter.

    Prettier Apex is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow these instructions from the Salesforce Extensions site.

    -

    Code linting

    -

    ESLint is a popular JavaScript linting tool used to identify stylistic errors and erroneous constructs. To use ESLint with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .eslintignore file is provided as part of this repository to exclude specific files from the linting process in the context of Lightning Web Components development.

    + +

    Pre-commit hook

    -

    This repository also comes with a package.json file that makes it easy to set up a pre-commit hook that enforces code formatting and linting by running Prettier and ESLint every time you git commit changes.

    -

    To set up the formatting and linting pre-commit hook:

    +

    This repository also comes with a package.json file that makes it easy to set up a pre-commit hook that enforces code formatting by running Prettier every time you git commit changes.

    +

    To set up the formatting pre-commit hook:

    1. Install Node.js if you haven't already done so
    2. -
    3. Run npm install in your project's root folder to install the Husky, ESLint, and Prettier modules (Note: Mac users should verify that Xcode command line tools are installed before running this command.)
    4. +
    5. Run npm install in your project's root folder to install the Husky and Prettier modules (Note: Mac users should verify that Xcode command line tools are installed before running this command.)
    -

    Husky will now run Prettier and ESLint automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. The commit will fail if linting errors are detected. You can also run the formatting and linting from the command line using the following commands (check out package.json for the full list):

    -
    npm run lint:lwc
    -npm run prettier
    +

    Husky will now run Prettier automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. You can also run the formatting from the command line using the following command (check out package.json for the full list):

    +
    npm run prettier
     
    diff --git a/doc-assets/README.html b/doc-assets/README.html index 4d50d0da..735f5922 100644 --- a/doc-assets/README.html +++ b/doc-assets/README.html @@ -1,16 +1,16 @@

    Action Plans

    -

    License Latest Commit Latest Pull Request codecov Twitter

    -

    Changelog

    +

    License Latest Commit Latest Pull Request codecov Twitter

    +

    Changelog

    Action Plans Installation and Setup

    -

    Please follow installation instructions, shown on the Installation page

    -

    AppExchange

    +

    Please follow installation instructions, shown on the Installation page

    + -

    Scratch Org

    -

    Developer Edition / Sandbox

    +

    Scratch Org

    +

    Developer Edition / Sandbox

    Apex Code Documentation

    About Action Plans

    Action Plans helps your organization encapsulate best practices into easily sharable, reusable task templates.

    @@ -120,7 +120,7 @@

    To Start Using an Object wit

    -

    +

    Field set on Action Plan with all related objects available and only some selected

    Test Code for Additional Objects

    Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage (not a best-practice!) just make a test method inserting and then deleting a record.
    Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet.

    Adding a New Custom Object Action Plan button to the Action Plan object

    @@ -206,19 +206,19 @@

    Task Record Types

    Create Action Plans for Several Accounts

    1. Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the "Create Account Action Plans" button.

      -

      +

      List view of Accounts with 50 selected. The "Create Account Action Plans" button is highlighted

    2. -
    3. Select the template you want to use by typing the name on the lookup and clicking on it.

      +
    4. Select the template you want to use by typing the name on the lookup and clicking on it.
      Action Plan creation screen with 50 sample records indicated on the page layout

    5. -
    6. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible.

      +
    7. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible.
      Filled-in Action Plan creation screen

    8. Save the Action Plan.
      Note: Action Plan creation is handled by a queueable (asynchronous) process. It can take a couple of minutes to be able to view all created records.

      -

      +

      Single Action Plan detail screen

    9. Verify the Action Plan and the tasks.

    10. -
    11. Complete the first task on the Action Plan.
      Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete.

      -

      +
    12. Complete the first task on the Action Plan.
      Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete. (A Contact related list is shown here, but this applies equally to Accounts.)

      +

      Contact related lists showing Action Plans for the Contact and one open and one closed task

    Task notifications for Flow-created Action Plans

    @@ -233,11 +233,11 @@

    Action Plan Tasks

  • If the box is checked, assuming that notifications are enabled for that user, the email will be sent.
  • Queues

    -

    Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the createdTasks (which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page.

    +

    Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the created Tasks (which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page.

    Automate Action Plan Creation

    Flow

    Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.
    Days from trigger to start Action Plan is optional (and defaults to 0). The first task will be due the number of days (specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template.

    -

    +

    Flow action setup screen

    The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps.

    (Optional) Sample Action Plan Template for Account onboarding

    Run the following:

    @@ -305,5 +305,5 @@

    Best Practices: How to Import

    Import is also simple. Navigate to the "Import Template" tab. Select the file you want to import using "Browse" and once you've found it click on "Import Template."

    (Optional) Sample Action Plan Template Import

    -

    This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder.

    +

    This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder.

    diff --git a/doc-assets/changelog.html b/doc-assets/changelog.html new file mode 100644 index 00000000..cb5e6f6b --- /dev/null +++ b/doc-assets/changelog.html @@ -0,0 +1,60 @@ + +

    Changelog

    +

    All notable changes to this project will be documented in this file.

    +

    The format is based on Keep a Changelog
    and this project adheres to Semantic Versioning.

    +

    Unreleased

    +

    Merged

    +
      +
    • Cosmetic rearrangements, apexdoc #55
    • +
    • 4.3.0 Queues, Child Objects #53
    • +
    • Version 4.3.0 pt 2 #47
    • +
    • Version 4.3.0 #44
    • +
    • Codecov to v3 #41
    • +
    +

    4.2.1 - 2022-05-25

    +

    Merged

    +
      +
    • Version 4.2.1 #37
    • +
    • Namespace to sample code #36
    • +
    • v4.2.0 #30
    • +
    +

    Fixed

    +
      +
    • Version 4.2.1 (#37) #35 #34
    • +
    • Namespace to sample code (#36) #35
    • +
    +

    4.2.0 - 2022-04-01

    +

    Merged

    +
      +
    • Specify Action Plan Name in Invocable Apex #27
    • +
    • Prettier, JS fixing #26
    • +
    • Highlight.js to 11.5 #25
    • +
    • Add changelog #24
    • +
    • Bump minimist from 1.2.5 to 1.2.6 #23
    • +
    • Upgrading Instructions #22
    • +
    • Add Codecov #21
    • +
    +

    4.1.0 - 2022-03-17

    +

    Merged

    +
      +
    • Release Ready #19
    • +
    • Pre-Release (beta15) #18
    • +
    • Pre-Commit ApexDox cleanup #16
    • +
    • Scripts, Cleanup, New Build #15
    • +
    +

    4.0.0-9 - 2022-02-23

    +

    Merged

    +
      +
    • AP Task AssignedTo field cleanup #14
    • +
    • Managed vs Unmanaged Project Config #13
    • +
    • Permissions Updates #12
    • +
    • Remove tests from ApexDox #10
    • +
    • Security, code coverage, Print page, Spring 22! #7
    • +
    • Code and documentation cleanup #6
    • +
    • PMD-suggested cleanup #5
    • +
    • Rename Template Task #4
    • +
    • Version 4.0.0.7 #3
    • +
    • Code comment cleanup #2
    • +
    • ApexDocs, Project Files, PMD rules #1
    • +
    + diff --git a/docs/ActionPlanCreateInvocable.html b/docs/ActionPlanCreateInvocable.html index be616800..616545e2 100644 --- a/docs/ActionPlanCreateInvocable.html +++ b/docs/ActionPlanCreateInvocable.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L21"> ActionPlanCreateInvocable

    @@ -368,7 +368,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L42"> makeActionPlanFromTemplate(requests)

    @@ -416,7 +416,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L328"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L328"> ActionPlanCreateInvocable.CreateActionPlanRequest

    @@ -450,7 +450,7 @@

    ActionPlanCreateInvocable.CreateActionPl rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L351"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L351"> actionPlanName @@ -467,7 +467,7 @@

    ActionPlanCreateInvocable.CreateActionPl rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L339"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L339"> daysToActionPlanStart @@ -484,7 +484,7 @@

    ActionPlanCreateInvocable.CreateActionPl rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L333"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L333"> relatedRecordID @@ -501,7 +501,7 @@

    ActionPlanCreateInvocable.CreateActionPl rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L345"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreateInvocable.cls#L345"> templateNameOrID diff --git a/docs/ActionPlanCreateInvocableTest.html b/docs/ActionPlanCreateInvocableTest.html index 1ade4223..04513a70 100644 --- a/docs/ActionPlanCreateInvocableTest.html +++ b/docs/ActionPlanCreateInvocableTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L25"> ActionPlanCreateInvocableTest

    @@ -371,7 +371,7 @@

    ActionPlanCreateInvocableTest Properties rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L27"> BULK_COUNT @@ -386,7 +386,7 @@

    ActionPlanCreateInvocableTest Properties rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L26"> TASK_COUNT @@ -450,7 +450,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L329"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L329"> bogusTemplateName()

    @@ -465,7 +465,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L227"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L227"> bulkAccounts()

    @@ -480,7 +480,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L261"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L261"> checkWeekendDueDate()

    @@ -495,7 +495,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L30"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L30"> relatedAccount()

    @@ -510,7 +510,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L161"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L161"> relatedCampaign()

    @@ -525,7 +525,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L183"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L183"> relatedCase()

    @@ -540,7 +540,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L72"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L72"> relatedContact()

    @@ -555,7 +555,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L205"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L205"> relatedContract()

    @@ -570,7 +570,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L114"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L114"> relatedLead()

    @@ -585,7 +585,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L139"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L139"> relatedOpportunity()

    @@ -600,7 +600,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L379"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L379"> setupRequest(templateId, relatedID, daysToActionPlanStart)

    @@ -636,7 +636,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L397"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreateInvocableTest.cls#L397"> setupRequest(templateId, relatedID, daysToActionPlanStart, actionPlanName)

    diff --git a/docs/ActionPlanCreationController.html b/docs/ActionPlanCreationController.html index f43b7b20..153b29e3 100644 --- a/docs/ActionPlanCreationController.html +++ b/docs/ActionPlanCreationController.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L25"> ActionPlanCreationController

    @@ -373,7 +373,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L34"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L34"> actionPlan @@ -393,7 +393,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L107"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L107"> addedTask @@ -413,7 +413,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L88"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L88"> apTasks @@ -433,7 +433,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L73"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L73"> canDisplayReminder @@ -451,7 +451,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L97"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L97"> cloneParam @@ -469,7 +469,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L69"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L69"> errorMsg @@ -487,7 +487,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L51"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L51"> hasRelated @@ -505,7 +505,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L55"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L55"> hasRelatedObject @@ -523,7 +523,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L102"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L102"> inVisualforceContext @@ -543,7 +543,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L78"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L78"> mapTasksListBkp @@ -561,7 +561,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L92"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L92"> pendingDeletes @@ -579,7 +579,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L426"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L426"> refId @@ -597,7 +597,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L439"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L439"> refType @@ -615,7 +615,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L351"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L351"> relatedFieldName @@ -633,7 +633,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L64"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L64"> relatedObjDisplayField @@ -651,7 +651,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L60"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L60"> relatedObjectName @@ -671,7 +671,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1251"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1251"> relatedObjectOptions @@ -689,7 +689,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L46"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L46"> relatedObjLabelPlural @@ -707,7 +707,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1093"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1093"> relatedObjNameList @@ -730,7 +730,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L42"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L42"> relatedRecordIDs @@ -748,7 +748,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1130"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1130"> relatedRecordsOne @@ -766,7 +766,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1138"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1138"> relatedRecordsThree @@ -784,7 +784,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1134"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1134"> relatedRecordsTwo @@ -802,7 +802,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L379"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L379"> relationshipFields @@ -820,7 +820,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L82"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L82"> subtitle @@ -838,7 +838,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L336"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L336"> taskHasRecordType @@ -856,7 +856,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L29"> taskIndex @@ -874,7 +874,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L260"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L260"> taskOwnerMap @@ -892,7 +892,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1381"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1381"> taskPriorities @@ -910,7 +910,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1364"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1364"> taskTypes @@ -928,7 +928,7 @@

    ActionPlanCreationController Properties< rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L38"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L38"> templateId @@ -958,7 +958,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L114"> ActionPlanCreationController(stdController)

    @@ -1241,7 +1241,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L732"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L732"> addTask()

    @@ -1265,7 +1265,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1224"> calculateMaxTaskIndex()

    @@ -1283,7 +1283,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1238"> calculateMaxTemplateTaskIndex()

    @@ -1301,7 +1301,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L684"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L684"> cancel()

    @@ -1319,7 +1319,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1144"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1144"> checkCycleDependent()

    @@ -1337,7 +1337,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L491"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L491"> checkPendingDeletes()

    @@ -1353,7 +1353,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L399"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L399"> chooseDisplayField(objectName)

    @@ -1379,7 +1379,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1176"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1176"> dependantCycle(controllingTask, index)

    @@ -1404,7 +1404,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1303"> findActivityEnabledObjects()

    @@ -1422,7 +1422,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L386"> getAllRelationshipFields()

    @@ -1450,7 +1450,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L841"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L841"> getAPTasks()

    @@ -1468,7 +1468,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1331"> getDefaultTaskRecordTypeId()

    @@ -1496,7 +1496,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L973"> getDisplayTemplateLookup()

    @@ -1514,7 +1514,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1215"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1215"> getErrorMsg()

    @@ -1532,7 +1532,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1400"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1400"> getHoursOption()

    @@ -1554,7 +1554,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1123"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1123"> getNameListSize()

    @@ -1576,7 +1576,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1410"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1410"> getNamespacePrefix()

    @@ -1602,7 +1602,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1545"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1545"> getRecords(queryText)

    @@ -1631,7 +1631,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1340"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1340"> getRecordTypeName()

    @@ -1653,7 +1653,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1257"> getRelatedObjectOptions()

    @@ -1677,7 +1677,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L981"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L981"> getSubjectItems()

    @@ -1695,7 +1695,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1388"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1388"> getTaskPriorities()

    @@ -1723,7 +1723,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1357"> getTaskRTPicklistValues()

    @@ -1753,7 +1753,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L813"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L813"> getTasks()

    @@ -1771,7 +1771,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1371"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1371"> getTaskTypes()

    @@ -1797,7 +1797,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L325"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L325"> getTemplateName()

    @@ -1825,7 +1825,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L474"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L474"> hasRelatedObject()

    @@ -1849,7 +1849,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L164"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L164"> initCloneActionPlan()

    @@ -1865,7 +1865,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L154"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L154"> initEditActionPlan()

    @@ -1881,7 +1881,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L243"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L243"> initNewActionPlan()

    @@ -1897,7 +1897,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L200"> initNewActionPlanFromTemplate(visualforceContext)

    @@ -1923,7 +1923,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L210"> initNewActionPlanFromTemplate(visualforceContext, apt)

    @@ -1950,7 +1950,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L418"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L418"> onLoad()

    @@ -1972,7 +1972,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1026"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1026"> parseRelatedIDs(relatedIDs)

    @@ -1998,7 +1998,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L268"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L268"> queryAPTaskOwners(ap)

    @@ -2024,7 +2024,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1002"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1002"> referedObjectInit()

    @@ -2046,7 +2046,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1319"> refreshRelatedObjectsLookUp()

    @@ -2070,7 +2070,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L457"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L457"> relatedObjectId()

    @@ -2088,7 +2088,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L766"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L766"> removeTask()

    @@ -2106,7 +2106,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1047"> retrieveNameRelatedRecord(relatedRecordIDs, relatedObjectName)

    @@ -2131,7 +2131,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L933"> retrieveTaskFromExistingActionPlan(actionPlanId)

    @@ -2153,7 +2153,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L510"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L510"> save()

    @@ -2180,7 +2180,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L574"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L574"> saveAndNew()

    @@ -2198,7 +2198,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L631"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L631"> saveHandler()

    @@ -2227,7 +2227,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L591"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L591"> saveMultipleAP()

    @@ -2253,7 +2253,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L653"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L653"> savePageRef()

    @@ -2277,7 +2277,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L530"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L530"> saveSingleAP()

    @@ -2299,7 +2299,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1421"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1421"> ActionPlanCreationController.ApTaskWrapper

    @@ -2341,7 +2341,7 @@

    ActionPlanCreationController.ApTaskWrapp rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1425"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1425"> ap @@ -2358,7 +2358,7 @@

    ActionPlanCreationController.ApTaskWrapp rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1430"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1430"> apt @@ -2375,7 +2375,7 @@

    ActionPlanCreationController.ApTaskWrapp rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1446"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1446"> assignToOwner @@ -2392,7 +2392,7 @@

    ActionPlanCreationController.ApTaskWrapp rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1440"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1440"> isLast @@ -2409,7 +2409,7 @@

    ActionPlanCreationController.ApTaskWrapp rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1435"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1435"> position @@ -2426,7 +2426,7 @@

    ActionPlanCreationController.ApTaskWrapp rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1485"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1485"> userRequired @@ -2458,7 +2458,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1455"> ApTaskWrapper(ap, apTask, position, apTaskRTId)

    @@ -2504,7 +2504,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L1501"> getUserRender()

    @@ -2533,7 +2533,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L296"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L296"> ActionPlanCreationController.OwnerWrapper

    @@ -2559,7 +2559,7 @@

    ActionPlanCreationController.OwnerWrappe rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L316"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L316"> tOwnerId @@ -2576,7 +2576,7 @@

    ActionPlanCreationController.OwnerWrappe rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L311"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L311"> tOwnerName @@ -2605,7 +2605,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls#L303"> OwnerWrapper(taskOwnerId, taskOwnerName)

    diff --git a/docs/ActionPlanCreationControllerTest.html b/docs/ActionPlanCreationControllerTest.html index 516c04af..598c23ce 100644 --- a/docs/ActionPlanCreationControllerTest.html +++ b/docs/ActionPlanCreationControllerTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L24"> ActionPlanCreationControllerTest

    @@ -444,7 +444,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L171"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L171"> actionPlanSave()

    @@ -459,7 +459,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L248"> actionPlanSaveAndMakeDependent()

    @@ -474,7 +474,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L214"> actionPlanSaveAndNew()

    @@ -489,7 +489,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L382"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L382"> addNewTask()

    @@ -504,7 +504,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L421"> changeAPTaskOwner()

    @@ -519,7 +519,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L476"> checkActionPlanTaskList()

    @@ -534,7 +534,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L326"> checkCompletedTasks()

    @@ -549,7 +549,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L779"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L779"> checkMaxTasks()

    @@ -564,7 +564,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L796"> checkMaxTasksError()

    @@ -579,7 +579,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L627"> checkReferredObject()

    @@ -594,7 +594,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L494"> checkSubjectItems()

    @@ -609,7 +609,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L116"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L116"> constructorTests()

    @@ -624,7 +624,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L581"> cyclicDependencyTasksFail()

    @@ -639,7 +639,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L540"> cyclicDependencyTaskSuccess()

    @@ -654,7 +654,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L755"> forceNoRecordTypes()

    @@ -669,7 +669,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L738"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L738"> forceRecordTypes()

    @@ -684,7 +684,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L356"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L356"> longNameTasks()

    @@ -699,7 +699,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L26"> makeData()

    @@ -714,7 +714,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L103"> newAPWithoutTasks()

    @@ -729,7 +729,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L273"> relateToMultipleContacts()

    @@ -744,7 +744,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L453"> removeActionPlanTask()

    @@ -759,7 +759,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L84"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L84"> saveAndDelete()

    @@ -774,7 +774,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L59"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L59"> saveAndView()

    @@ -789,7 +789,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L702"> setTaskRecordType()

    @@ -804,7 +804,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationControllerTest.cls#L38"> singleRecordConstructor()

    diff --git a/docs/ActionPlanCreationTaskWrapperTest.html b/docs/ActionPlanCreationTaskWrapperTest.html index 734325af..4ed18808 100644 --- a/docs/ActionPlanCreationTaskWrapperTest.html +++ b/docs/ActionPlanCreationTaskWrapperTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L24"> ActionPlanCreationTaskWrapperTest

    @@ -396,7 +396,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L41"> checkActionPlanTaskList()

    @@ -411,7 +411,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L137"> doEditActionPlan()

    @@ -426,7 +426,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L62"> doTemplateCreateEdit()

    @@ -441,7 +441,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L157"> editActionPlanAssignByDefault()

    @@ -456,7 +456,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L171"> editActionPlanNOTAssignByDefault()

    @@ -471,7 +471,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L29"> makeData()

    @@ -487,7 +487,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L107"> makeFromTemplateAssignByDefault()

    @@ -502,7 +502,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanCreationTaskWrapperTest.cls#L119"> makeFromTemplateNOTAssignByDefault()

    diff --git a/docs/ActionPlanDetailController.html b/docs/ActionPlanDetailController.html index 83ca7160..f13727ea 100644 --- a/docs/ActionPlanDetailController.html +++ b/docs/ActionPlanDetailController.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L22"> ActionPlanDetailController

    @@ -368,7 +368,7 @@

    ActionPlanDetailController Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L26"> actionPlan @@ -385,7 +385,7 @@

    ActionPlanDetailController Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L125"> apTaskWrapperList @@ -402,7 +402,7 @@

    ActionPlanDetailController Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L39"> canDisplayReminder @@ -419,7 +419,7 @@

    ActionPlanDetailController Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L32"> hasRecordType @@ -448,7 +448,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L45"> ActionPlanDetailController(stdController)

    @@ -525,7 +525,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L69"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L69"> deletePlan()

    @@ -549,7 +549,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L130"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L130"> getActionPlanTasks()

    @@ -569,7 +569,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L311"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L311"> getCanShare()

    @@ -591,7 +591,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L320"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L320"> getCanTransfer()

    @@ -613,7 +613,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L113"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L113"> gethasControllingTasks()

    @@ -637,7 +637,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L295"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L295"> getRecordTypeName()

    @@ -655,7 +655,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L243"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L243"> getRelatedObjectLabel()

    @@ -673,7 +673,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L261"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L261"> getrelatedRecordName()

    @@ -691,7 +691,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L229"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L229"> getVersion()

    @@ -709,7 +709,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L59"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L59"> onLoad()

    @@ -735,7 +735,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L183"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L183"> ActionPlanDetailController.TaskWrapper

    @@ -763,7 +763,7 @@

    ActionPlanDetailController.TaskWrapper P rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L187"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L187"> apt @@ -780,7 +780,7 @@

    ActionPlanDetailController.TaskWrapper P rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L195"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L195"> taskId @@ -797,7 +797,7 @@

    ActionPlanDetailController.TaskWrapper P rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L199"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L199"> taskOwnerId @@ -814,7 +814,7 @@

    ActionPlanDetailController.TaskWrapper P rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L203"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L203"> taskOwnerName @@ -831,7 +831,7 @@

    ActionPlanDetailController.TaskWrapper P rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L191"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L191"> tsk @@ -860,7 +860,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanDetailController.cls#L210"> TaskWrapper(aptParam, taskParam)

    diff --git a/docs/ActionPlanDetailControllerTest.html b/docs/ActionPlanDetailControllerTest.html index 91a2f10a..3651f6ed 100644 --- a/docs/ActionPlanDetailControllerTest.html +++ b/docs/ActionPlanDetailControllerTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L22"> ActionPlanDetailControllerTest

    @@ -391,7 +391,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L106"> checkActionPlanTemplateVersion()

    @@ -406,7 +406,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L140"> checkDeleteActionPlan()

    @@ -421,7 +421,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L88"> checkDependentTasks()

    @@ -436,7 +436,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L161"> checkGetRelatedRecordName()

    @@ -451,7 +451,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L70"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L70"> checkNoTasks()

    @@ -466,7 +466,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L52"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L52"> checkTasks()

    @@ -481,7 +481,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L24"> constructorTests()

    @@ -496,7 +496,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L233"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L233"> forceNoRecordType()

    @@ -511,7 +511,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L212"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanDetailControllerTest.cls#L212"> forceRecordType()

    diff --git a/docs/ActionPlanTemplateCreationCntrlTest.html b/docs/ActionPlanTemplateCreationCntrlTest.html index 892c585f..dfc997e7 100644 --- a/docs/ActionPlanTemplateCreationCntrlTest.html +++ b/docs/ActionPlanTemplateCreationCntrlTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L22"> ActionPlanTemplateCreationCntrlTest

    @@ -363,7 +363,7 @@

    ActionPlanTemplateCreationCntrlTest Prop rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L23"> TEMPLATE_TASKS_COUNT @@ -439,7 +439,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L234"> addNewActionPlanTemplateTask()

    @@ -454,7 +454,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L214"> addTemplateTask()

    @@ -469,7 +469,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L125"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L125"> cancel()

    @@ -484,7 +484,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L197"> checkMaxTasksError()

    @@ -499,7 +499,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L371"> checkTemplateSubjectItem()

    @@ -514,7 +514,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L350"> checkTemplateTaskSize()

    @@ -529,7 +529,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L26"> contructor()

    @@ -544,7 +544,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L389"> cyclicDependencyFail()

    @@ -559,7 +559,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L467"> cyclicDependencySuccess()

    @@ -574,7 +574,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L179"> forceNoRecordType()

    @@ -589,7 +589,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L437"> itselfCyclicDependencyFail()

    @@ -604,7 +604,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L323"> longNameTemplateTasks()

    @@ -619,7 +619,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L260"> removeTemplateTask()

    @@ -634,7 +634,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L279"> removingActionPlanTemplateTask()

    @@ -649,7 +649,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L305"> retrievingTemplateTasks()

    @@ -664,7 +664,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L57"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L57"> save()

    @@ -679,7 +679,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L86"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L86"> saveTemplate()

    @@ -694,7 +694,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateCreationCntrlTest.cls#L146"> setTaskRecordType()

    diff --git a/docs/ActionPlanTemplateCreationController.html b/docs/ActionPlanTemplateCreationController.html index 402dbca7..b937e57f 100644 --- a/docs/ActionPlanTemplateCreationController.html +++ b/docs/ActionPlanTemplateCreationController.html @@ -334,7 +334,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L23"> ActionPlanTemplateCreationController

    @@ -369,7 +369,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L29"> actionPlanTemplate @@ -389,7 +389,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L311"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L311"> aptTasks @@ -409,7 +409,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L37"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L37"> canDisplayReminder @@ -427,7 +427,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L504"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L504"> errorMsg @@ -445,7 +445,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L44"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L44"> pendingTemplateTaskDeletes @@ -465,7 +465,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L33"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L33"> subTitle @@ -483,7 +483,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L41"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L41"> taskHasRecordType @@ -501,7 +501,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L24"> taskIndex @@ -519,7 +519,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L567"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L567"> taskPriorities @@ -537,7 +537,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L550"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L550"> taskTypes @@ -555,7 +555,7 @@

    ActionPlanTemplateCreationController Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L48"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L48"> templateId @@ -591,7 +591,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L57"> ActionPlanTemplateCreationController(stdController)

    @@ -738,7 +738,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L231"> addTemplateTask()

    @@ -754,7 +754,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L518"> calculateTaskIndexValue()

    @@ -772,7 +772,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L212"> cancelTemplate()

    @@ -790,7 +790,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L420"> checkCycleDependent()

    @@ -808,7 +808,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L464"> dependantCycle(inspectedTask, index)

    @@ -833,7 +833,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L117"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L117"> doSave()

    @@ -854,7 +854,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L534"> getDefaultTaskRecordTypeId()

    @@ -878,7 +878,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L510"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L510"> getErrorMsg()

    @@ -900,7 +900,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L586"> getHoursOption()

    @@ -922,7 +922,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L574"> getTaskPriorities()

    @@ -950,7 +950,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L543"> getTaskRTPicklistValues()

    @@ -974,7 +974,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L557"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L557"> getTaskTypes()

    @@ -1000,7 +1000,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L399"> getTemplateSubjectItems()

    @@ -1018,7 +1018,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L359"> getTemplateTasks()

    @@ -1036,7 +1036,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L391"> getTemplateTaskSize()

    @@ -1054,7 +1054,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L295"> getTemplateWrappers()

    @@ -1076,7 +1076,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L103"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L103"> onLoad()

    @@ -1098,7 +1098,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L328"> queryAPTTasks(templateId)

    @@ -1124,7 +1124,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L249"> removeTemplateTask()

    @@ -1140,7 +1140,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L196"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L196"> saveAndNew()

    @@ -1158,7 +1158,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L180"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L180"> saveTemplate()

    @@ -1179,7 +1179,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L432"> templateCycleDependent()

    @@ -1201,7 +1201,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L597"> ActionPlanTemplateCreationController.ApTTaskWrapper

    @@ -1232,7 +1232,7 @@

    ActionPlanTemplateCreationController.ApT rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L612"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L612"> isLast @@ -1249,7 +1249,7 @@

    ActionPlanTemplateCreationController.ApT rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L607"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L607"> position @@ -1266,7 +1266,7 @@

    ActionPlanTemplateCreationController.ApT rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L602"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L602"> task @@ -1295,7 +1295,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateCreationController.cls#L621"> ApTTaskWrapper(apTask, pos, apTTaskRTId)

    diff --git a/docs/ActionPlanTemplateDetailCntrlTest.html b/docs/ActionPlanTemplateDetailCntrlTest.html index dd8f1d43..af3f0b50 100644 --- a/docs/ActionPlanTemplateDetailCntrlTest.html +++ b/docs/ActionPlanTemplateDetailCntrlTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L23"> ActionPlanTemplateDetailCntrlTest

    @@ -392,7 +392,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L103"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L103"> checkNoTasks()

    @@ -407,7 +407,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L25"> constructor()

    @@ -422,7 +422,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L121"> deleteActionPlanTemplate()

    @@ -437,7 +437,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L187"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L187"> exportTest()

    @@ -452,7 +452,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L82"> forceNoRecordType()

    @@ -467,7 +467,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L60"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L60"> forceRecordType()

    @@ -482,7 +482,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L165"> retrievingActionPlanTemplate()

    @@ -497,7 +497,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateDetailCntrlTest.cls#L142"> retrievingTemplateTasks()

    diff --git a/docs/ActionPlanTemplateDetailController.html b/docs/ActionPlanTemplateDetailController.html index 1cb1be4a..7a7b3fc3 100644 --- a/docs/ActionPlanTemplateDetailController.html +++ b/docs/ActionPlanTemplateDetailController.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L21"> ActionPlanTemplateDetailController

    @@ -367,7 +367,7 @@

    ActionPlanTemplateDetailController Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L27"> actionPlanExportXMLId @@ -385,7 +385,7 @@

    ActionPlanTemplateDetailController Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L23"> actionPlanTemplate @@ -405,7 +405,7 @@

    ActionPlanTemplateDetailController Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L35"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L35"> canDisplayReminder @@ -423,7 +423,7 @@

    ActionPlanTemplateDetailController Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L31"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L31"> taskHasRecordType @@ -458,7 +458,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L44"> ActionPlanTemplateDetailController(stdController)

    @@ -534,7 +534,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L80"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L80"> deleteTemplate()

    @@ -552,7 +552,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L130"> exportTemplateToXMLDoc()

    @@ -572,7 +572,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L175"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L175"> getCanShare()

    @@ -598,7 +598,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L185"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L185"> getCanTransfer()

    @@ -624,7 +624,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L64"> getRecordTypeName()

    @@ -642,7 +642,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L140"> getSuccessMessage()

    @@ -664,7 +664,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L99"> getTemplateTasks()

    @@ -682,7 +682,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L55"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateDetailController.cls#L55"> onLoad()

    diff --git a/docs/ActionPlanTemplateExport.html b/docs/ActionPlanTemplateExport.html index e1722a04..376b1bf4 100644 --- a/docs/ActionPlanTemplateExport.html +++ b/docs/ActionPlanTemplateExport.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L21"> ActionPlanTemplateExport

    @@ -370,7 +370,7 @@

    ActionPlanTemplateExport Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L30"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L30"> fileOrDocumentId @@ -389,7 +389,7 @@

    ActionPlanTemplateExport Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L25"> templateId @@ -418,7 +418,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L36"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L36"> ActionPlanTemplateExport(templateId)

    @@ -470,7 +470,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L129"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L129"> buildXmlString(target)

    @@ -491,7 +491,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L46"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L46"> export()

    @@ -517,7 +517,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L110"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L110"> saveToContent(name, xml)

    @@ -546,7 +546,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L91"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L91"> saveToDocument(name, xml)

    @@ -573,7 +573,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L196"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateExport.cls#L196"> writeElement(out, tag, content)

    diff --git a/docs/ActionPlanTemplateExportTest.html b/docs/ActionPlanTemplateExportTest.html index d5e3c8fc..b80e3434 100644 --- a/docs/ActionPlanTemplateExportTest.html +++ b/docs/ActionPlanTemplateExportTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L25"> ActionPlanTemplateExportTest

    @@ -379,7 +379,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L42"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L42"> exportDocTest()

    @@ -394,7 +394,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L59"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L59"> exportFileTest()

    @@ -409,7 +409,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateExportTest.cls#L27"> exportTest()

    diff --git a/docs/ActionPlanTemplateImport.html b/docs/ActionPlanTemplateImport.html index 72d691ed..0ab02853 100644 --- a/docs/ActionPlanTemplateImport.html +++ b/docs/ActionPlanTemplateImport.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L22"> ActionPlanTemplateImport

    @@ -370,7 +370,7 @@

    ActionPlanTemplateImport Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L23"> importedTasks @@ -385,7 +385,7 @@

    ActionPlanTemplateImport Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L24"> newTasks @@ -412,7 +412,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L29"> ActionPlanTemplateImport()

    @@ -480,7 +480,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L396"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L396"> getDecodedString(reader)

    @@ -502,7 +502,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L121"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L121"> importAPTemplate(xml)

    @@ -524,7 +524,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L143"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L143"> importAPTtasks(xml, apTemplateId)

    @@ -547,7 +547,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L163"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L163"> parseMetaData(reader)

    @@ -570,7 +570,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L218"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L218"> parseTemplate(reader)

    @@ -591,7 +591,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L271"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L271"> parseTemplateTask(reader, apTemplateId)

    @@ -614,7 +614,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L41"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L41"> processImportedDocument(document)

    @@ -638,7 +638,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L97"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L97"> readingMetaData(xml)

    @@ -660,7 +660,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L365"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L365"> setupDependentTasks()

    @@ -682,7 +682,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L401"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImport.cls#L401"> ActionPlanTemplateImport.ImportException

    diff --git a/docs/ActionPlanTemplateImportCntrlTest.html b/docs/ActionPlanTemplateImportCntrlTest.html index eb043227..d714c55f 100644 --- a/docs/ActionPlanTemplateImportCntrlTest.html +++ b/docs/ActionPlanTemplateImportCntrlTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L25"> ActionPlanTemplateImportCntrlTest

    @@ -371,7 +371,7 @@

    ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L26"> xmlImport @@ -386,7 +386,7 @@

    ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L30"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L30"> xmlImportEmptyMetaData @@ -401,7 +401,7 @@

    ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L31"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L31"> xmlImportFromExport @@ -416,7 +416,7 @@

    ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L28"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L28"> xmlImportWrongAPTask @@ -431,7 +431,7 @@

    ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L27"> xmlImportWrongAPTemplate @@ -446,7 +446,7 @@

    ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L29"> xmlImportWrongMetaData @@ -461,7 +461,7 @@

    ActionPlanTemplateImportCntrlTest Proper rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L32"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L32"> xmlWithControllingTasks @@ -513,7 +513,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L132"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L132"> badFields()

    @@ -528,7 +528,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L156"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L156"> controllingTask()

    @@ -543,7 +543,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L170"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L170"> roundTrip()

    @@ -558,7 +558,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L35"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L35"> xMLImport()

    @@ -573,7 +573,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L49"> xMLImportEmptyAttachment()

    @@ -588,7 +588,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L62"> xMLImportEmptyXML()

    @@ -603,7 +603,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L118"> xMLImportFromExport()

    @@ -618,7 +618,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L104"> xMLImportWrongMetaData()

    @@ -633,7 +633,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L76"> xMLImportWrongTemplate()

    @@ -648,7 +648,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlanTemplateImportCntrlTest.cls#L90"> xMLImportWrongTemplateTask()

    diff --git a/docs/ActionPlanTemplateImportController.html b/docs/ActionPlanTemplateImportController.html index f2aa4e72..2ead1bd4 100644 --- a/docs/ActionPlanTemplateImportController.html +++ b/docs/ActionPlanTemplateImportController.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls#L23"> ActionPlanTemplateImportController

    @@ -372,7 +372,7 @@

    ActionPlanTemplateImportController Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls#L29"> attachment @@ -401,7 +401,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls#L34"> ActionPlanTemplateImportController()

    @@ -429,7 +429,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls#L43"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanTemplateImportController.cls#L43"> importTemplate()

    diff --git a/docs/ActionPlansBuilderUtilities.html b/docs/ActionPlansBuilderUtilities.html index 32d20dce..d462589a 100644 --- a/docs/ActionPlansBuilderUtilities.html +++ b/docs/ActionPlansBuilderUtilities.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L25"> ActionPlansBuilderUtilities

    @@ -375,7 +375,7 @@

    ActionPlansBuilderUtilities Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L46"> allTasksToUpsert @@ -392,7 +392,7 @@

    ActionPlansBuilderUtilities Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L26"> baseAPTaskList @@ -409,7 +409,7 @@

    ActionPlansBuilderUtilities Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L41"> mode @@ -426,7 +426,7 @@

    ActionPlansBuilderUtilities Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L28"> relActionPlans @@ -443,7 +443,7 @@

    ActionPlansBuilderUtilities Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L29"> relAPTaskList @@ -460,7 +460,7 @@

    ActionPlansBuilderUtilities Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L31"> relatedObjectName @@ -477,7 +477,7 @@

    ActionPlansBuilderUtilities Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L32"> relatedRecordIDs @@ -505,7 +505,7 @@

    Enums

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L37"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L37"> ApEditMode @@ -537,7 +537,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L55"> ActionPlansBuilderUtilities(baseObj, aPTListparam, refType, oIdsLIst)

    @@ -607,7 +607,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L93"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L93"> generateActionPlans()

    @@ -629,7 +629,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L406"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L406"> generateObjectFeeds(recIDs)

    @@ -655,7 +655,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L321"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L321"> getAPTaskTemplateUser(ap, relObjOwners, apTaskUser)

    @@ -689,7 +689,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L452"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L452"> getPostObjectBody(recID, apName)

    @@ -718,7 +718,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L339"> getRelatedRecordOwnerId(ap, relObjOwners)

    @@ -745,7 +745,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls#L363"> retrieveOwnersDataRelatedObject(relatedRecordIDs)

    diff --git a/docs/ActionPlansCreateMultipleAPsExtTest.html b/docs/ActionPlansCreateMultipleAPsExtTest.html index 1e6299bc..b4b250aa 100644 --- a/docs/ActionPlansCreateMultipleAPsExtTest.html +++ b/docs/ActionPlansCreateMultipleAPsExtTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls#L24"> ActionPlansCreateMultipleAPsExtTest

    @@ -377,7 +377,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls#L49"> givenNoRecordsToCreateThenNotCreated()

    @@ -392,7 +392,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansCreateMultipleAPsExtTest.cls#L26"> givenRecordsToCreateThenCreated()

    diff --git a/docs/ActionPlansCreateMultipleAPsExtension.html b/docs/ActionPlansCreateMultipleAPsExtension.html index c80ba4c1..666576fc 100644 --- a/docs/ActionPlansCreateMultipleAPsExtension.html +++ b/docs/ActionPlansCreateMultipleAPsExtension.html @@ -334,7 +334,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls#L23"> ActionPlansCreateMultipleAPsExtension

    @@ -368,7 +368,7 @@

    ActionPlansCreateMultipleAPsExtension Pr rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls#L32"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls#L32"> objIDs @@ -385,7 +385,7 @@

    ActionPlansCreateMultipleAPsExtension Pr rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls#L27"> stdSetCntrlr @@ -418,7 +418,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls#L39"> ActionPlansCreateMultipleAPsExtension(stdSetController)

    @@ -454,7 +454,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls#L52"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansCreateMultipleAPsExtension.cls#L52"> doRedirect()

    diff --git a/docs/ActionPlansDeleteMultipleAPExtTest.html b/docs/ActionPlansDeleteMultipleAPExtTest.html index 3d4ff956..b435fcfa 100644 --- a/docs/ActionPlansDeleteMultipleAPExtTest.html +++ b/docs/ActionPlansDeleteMultipleAPExtTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L21"> ActionPlansDeleteMultipleAPExtTest

    @@ -365,7 +365,7 @@

    ActionPlansDeleteMultipleAPExtTest Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L22"> APS_TO_CREATE @@ -399,7 +399,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L25"> datasetup()

    @@ -414,7 +414,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L73"> givenNoRecordsToDeleteThenNotDeleted()

    @@ -429,7 +429,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L59"> givenRecordsToDeleteThenDeleted()

    @@ -444,7 +444,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansDeleteMultipleAPExtTest.cls#L89"> noDeletePermission()

    diff --git a/docs/ActionPlansDeleteMultipleAPExtension.html b/docs/ActionPlansDeleteMultipleAPExtension.html index 62e46043..110a0c1b 100644 --- a/docs/ActionPlansDeleteMultipleAPExtension.html +++ b/docs/ActionPlansDeleteMultipleAPExtension.html @@ -334,7 +334,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls#L28"> ActionPlansDeleteMultipleAPExtension

    @@ -374,7 +374,7 @@

    ActionPlansDeleteMultipleAPExtension Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls#L34"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls#L34"> actionPlansToShow @@ -391,7 +391,7 @@

    ActionPlansDeleteMultipleAPExtension Pro rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls#L29"> standardController @@ -422,7 +422,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls#L40"> ActionPlansDeleteMultipleAPExtension(stdSetController)

    @@ -458,7 +458,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansDeleteMultipleAPExtension.cls#L51"> deleteRecords()

    diff --git a/docs/ActionPlansObjectTriggersTest.html b/docs/ActionPlansObjectTriggersTest.html index 78cd2c11..45bb6544 100644 --- a/docs/ActionPlansObjectTriggersTest.html +++ b/docs/ActionPlansObjectTriggersTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L22"> ActionPlansObjectTriggersTest

    @@ -366,7 +366,7 @@

    ActionPlansObjectTriggersTest Properties rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L23"> aps @@ -421,7 +421,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L38"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L38"> accountTrigger()

    @@ -436,7 +436,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L73"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L73"> campaignTrigger()

    @@ -451,7 +451,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L109"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L109"> caseTrigger()

    @@ -466,7 +466,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L145"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L145"> contactTrigger()

    @@ -481,7 +481,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L181"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L181"> contractTrigger()

    @@ -496,7 +496,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L328"> leadConversionAccount()

    @@ -511,7 +511,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L289"> leadConversionContact()

    @@ -526,7 +526,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L374"> leadConversionOpportunity()

    @@ -541,7 +541,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L217"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L217"> leadTrigger()

    @@ -556,7 +556,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L26"> makeData()

    @@ -571,7 +571,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L253"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansObjectTriggersTest.cls#L253"> opportunityTrigger()

    diff --git a/docs/ActionPlansPostInstallScript.html b/docs/ActionPlansPostInstallScript.html index de8ea04e..731f5395 100644 --- a/docs/ActionPlansPostInstallScript.html +++ b/docs/ActionPlansPostInstallScript.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L19"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L19"> ActionPlansPostInstallScript

    @@ -386,7 +386,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L41"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L41"> onFirstInstall()

    @@ -406,7 +406,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L25"> onInstall(context)

    @@ -430,7 +430,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L110"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L110"> onPush()

    @@ -448,7 +448,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L104"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansPostInstallScript.cls#L104"> onUpgrade()

    diff --git a/docs/ActionPlansPostInstallScriptTest.html b/docs/ActionPlansPostInstallScriptTest.html index f8927136..e137cdb3 100644 --- a/docs/ActionPlansPostInstallScriptTest.html +++ b/docs/ActionPlansPostInstallScriptTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls#L20"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls#L20"> ActionPlansPostInstallScriptTest

    @@ -372,7 +372,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansPostInstallScriptTest.cls#L22"> installScript()

    diff --git a/docs/ActionPlansQueueableBuilder.html b/docs/ActionPlansQueueableBuilder.html index 5ba417f8..f36d2618 100644 --- a/docs/ActionPlansQueueableBuilder.html +++ b/docs/ActionPlansQueueableBuilder.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls#L23"> ActionPlansQueueableBuilder

    @@ -370,7 +370,7 @@

    ActionPlansQueueableBuilder Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls#L24"> builtUtil @@ -399,7 +399,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls#L33"> ActionPlansQueueableBuilder(baseObj, aPTList, refType, oIdsSet)

    @@ -442,7 +442,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls#L42"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls#L42"> execute(qc)

    diff --git a/docs/ActionPlansQueueableBuilderTest.html b/docs/ActionPlansQueueableBuilderTest.html index c386558a..91696df7 100644 --- a/docs/ActionPlansQueueableBuilderTest.html +++ b/docs/ActionPlansQueueableBuilderTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L24"> ActionPlansQueueableBuilderTest

    @@ -378,7 +378,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L26"> makeData()

    @@ -393,7 +393,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L37"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L37"> runQueueContact()

    @@ -408,7 +408,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L90"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansQueueableBuilderTest.cls#L90"> runQueueException()

    diff --git a/docs/ActionPlansRedirect.html b/docs/ActionPlansRedirect.html index 1945978d..2249c68f 100644 --- a/docs/ActionPlansRedirect.html +++ b/docs/ActionPlansRedirect.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L18"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L18"> ActionPlansRedirect

    @@ -368,7 +368,7 @@

    ActionPlansRedirect Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L21"> actionPlan @@ -385,7 +385,7 @@

    ActionPlansRedirect Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L19"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L19"> actionPlanTask @@ -402,7 +402,7 @@

    ActionPlansRedirect Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L22"> actionPlanTemplate @@ -419,7 +419,7 @@

    ActionPlansRedirect Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L20"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L20"> actionPlanTemplateTask @@ -436,7 +436,7 @@

    ActionPlansRedirect Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L28"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L28"> objName @@ -453,7 +453,7 @@

    ActionPlansRedirect Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L23"> parentId @@ -470,7 +470,7 @@

    ActionPlansRedirect Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L24"> recordId @@ -499,7 +499,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L35"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L35"> ActionPlansRedirect(controller)

    @@ -541,7 +541,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L78"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L78"> cancel()

    @@ -559,7 +559,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L98"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L98"> redirect()

    @@ -577,7 +577,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L64"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansRedirect.cls#L64"> save()

    diff --git a/docs/ActionPlansRedirectTest.html b/docs/ActionPlansRedirectTest.html index 0e086100..0593c9d0 100644 --- a/docs/ActionPlansRedirectTest.html +++ b/docs/ActionPlansRedirectTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L20"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L20"> ActionPlansRedirectTest

    @@ -384,7 +384,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L66"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L66"> actionPlanChangeOwner()

    @@ -399,7 +399,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L82"> actionPlanTemplateChangeOwner()

    @@ -414,7 +414,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L32"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L32"> aPTaskRedirect()

    @@ -429,7 +429,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L49"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L49"> aPTTaskRedirect()

    @@ -444,7 +444,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansRedirectTest.cls#L22"> makeData()

    diff --git a/docs/ActionPlansSectionHeaderController.html b/docs/ActionPlansSectionHeaderController.html index 07234bfe..139cad8e 100644 --- a/docs/ActionPlansSectionHeaderController.html +++ b/docs/ActionPlansSectionHeaderController.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L28"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L28"> ActionPlansSectionHeaderController

    @@ -385,7 +385,7 @@

    ActionPlansSectionHeaderController Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L32"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L32"> objectName @@ -402,7 +402,7 @@

    ActionPlansSectionHeaderController Prope rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L51"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L51"> orgObject @@ -458,7 +458,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L67"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L67"> getIsCustom()

    @@ -482,7 +482,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L58"> getObjectIconInfo()

    @@ -506,7 +506,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L172"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L172"> getRecords(queryText)

    @@ -535,7 +535,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L76"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L76"> isCustom(sObjectName)

    @@ -557,7 +557,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls#L91"> retrieveIconForObject(sObjectName)

    diff --git a/docs/ActionPlansSectionHeaderControllerTest.html b/docs/ActionPlansSectionHeaderControllerTest.html index 819964c6..0923f391 100644 --- a/docs/ActionPlansSectionHeaderControllerTest.html +++ b/docs/ActionPlansSectionHeaderControllerTest.html @@ -334,7 +334,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L19"> ActionPlansSectionHeaderControllerTest

    @@ -383,7 +383,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L21"> makeData()

    @@ -398,7 +398,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L76"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L76"> nullObject()

    @@ -413,7 +413,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L45"> objectTabDescribeNegative()

    @@ -428,7 +428,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L64"> objectTabDescribeNotInApplication()

    @@ -443,7 +443,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansSectionHeaderControllerTest.cls#L28"> objectTabDescribePositive()

    diff --git a/docs/ActionPlansTaskTriggerUtilities.html b/docs/ActionPlansTaskTriggerUtilities.html index 8b1ca8e8..faf89297 100644 --- a/docs/ActionPlansTaskTriggerUtilities.html +++ b/docs/ActionPlansTaskTriggerUtilities.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L23"> ActionPlansTaskTriggerUtilities

    @@ -366,7 +366,7 @@

    ActionPlansTaskTriggerUtilities Properti rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L24"> dependentApts @@ -381,7 +381,7 @@

    ActionPlansTaskTriggerUtilities Properti rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L25"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L25"> tasksSendEmail @@ -396,7 +396,7 @@

    ActionPlansTaskTriggerUtilities Properti rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L26"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L26"> tasksSendNoEmail @@ -468,7 +468,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L375"> actionsOnTaskBeforeDelete(cTasks)

    @@ -494,7 +494,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L283"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L283"> deleteAPTasks(aPTasks)

    @@ -514,7 +514,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L295"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L295"> futureDeleteTasks(taskIDs)

    @@ -534,7 +534,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L305"> generateDependentTasksAndReset(apTasks, taskIndexToDelete)

    @@ -560,7 +560,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L32"> initDependentTaskWork(taskIdMap)

    @@ -580,7 +580,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L165"> populateUpdateApttsList(dependentAptList)

    @@ -602,7 +602,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L86"> queryDependentAPTaskTemplates(closedTasks)

    @@ -618,7 +618,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L266"> updateAPTasksStatus(apTasksMap)

    @@ -638,7 +638,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTaskTriggerUtilities.cls#L107"> upsertDependentAPTasks(dependentAptList)

    diff --git a/docs/ActionPlansTaskTriggerUtilitiesTest.html b/docs/ActionPlansTaskTriggerUtilitiesTest.html index 214f3539..d472190a 100644 --- a/docs/ActionPlansTaskTriggerUtilitiesTest.html +++ b/docs/ActionPlansTaskTriggerUtilitiesTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L23"> ActionPlansTaskTriggerUtilitiesTest

    @@ -370,7 +370,7 @@

    ActionPlansTaskTriggerUtilitiesTest Prop rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L24"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L24"> testClosedStatus @@ -443,7 +443,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L114"> actionPlanDelete()

    @@ -459,7 +459,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L229"> aPTaskUndelete()

    @@ -475,7 +475,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L168"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L168"> aPTaskUpdate()

    @@ -491,7 +491,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L298"> aPTTemplateUndeleteException()

    @@ -507,7 +507,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L38"> coverFutureMethods()

    @@ -523,7 +523,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L27"> makeData()

    @@ -538,7 +538,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L55"> taskAfterUpdateToCompleted()

    @@ -554,7 +554,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L348"> taskAfterUpdateToOpen()

    @@ -570,7 +570,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L477"> taskAssignToQueue()

    @@ -589,7 +589,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansTaskTriggerUtilitiesTest.cls#L405"> taskBeforeDelete()

    diff --git a/docs/ActionPlansTestUtilities.html b/docs/ActionPlansTestUtilities.html index 7f1e006f..e09bc88c 100644 --- a/docs/ActionPlansTestUtilities.html +++ b/docs/ActionPlansTestUtilities.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L23"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L23"> ActionPlansTestUtilities

    @@ -369,7 +369,7 @@

    ActionPlansTestUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L27"> forceError @@ -387,7 +387,7 @@

    ActionPlansTestUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L32"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L32"> forceHasRecordType @@ -405,7 +405,7 @@

    ActionPlansTestUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L38"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L38"> standardObjects @@ -574,7 +574,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L119"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L119"> assignAPPermissionSets(testUserId, allOrNone)

    @@ -605,7 +605,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L106"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L106"> createAdminUser()

    @@ -632,7 +632,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L137"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L137"> createNewAccount(insertRecord)

    @@ -654,7 +654,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L152"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L152"> createNewAccount()

    @@ -672,7 +672,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L325"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L325"> createNewActionPlan(relatedObject, numTasks, customObjectId)

    @@ -711,7 +711,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L389"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L389"> createNewActionPlanTask(actionPlan, days, userId, category, priority)

    @@ -749,7 +749,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L414"> createNewActionPlanTemplate(numTasks)

    @@ -781,7 +781,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L449"> createNewActionPlanTemplateTask(apTemplate, days, userId, category, priority)

    @@ -821,7 +821,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L162"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L162"> createNewCampaign(insertRecord)

    @@ -849,7 +849,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L178"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L178"> createNewCampaign()

    @@ -873,7 +873,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L187"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L187"> createNewCase(insertRecord)

    @@ -895,7 +895,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L203"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L203"> createNewCase()

    @@ -913,7 +913,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L212"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L212"> createNewContact(insertRecord)

    @@ -935,7 +935,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L227"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L227"> createNewContact()

    @@ -953,7 +953,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L236"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L236"> createNewContract(insertRecord)

    @@ -975,7 +975,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L253"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L253"> createNewContract()

    @@ -993,7 +993,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L262"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L262"> createNewLead(insertRecord)

    @@ -1015,7 +1015,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L280"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L280"> createNewLead()

    @@ -1033,7 +1033,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L290"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L290"> createNewOpportunity(insertRecord)

    @@ -1061,7 +1061,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L308"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L308"> createNewOpportunity()

    @@ -1085,7 +1085,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L45"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L45"> createRandomWord()

    @@ -1105,7 +1105,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L56"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L56"> createRandomWord(prefix)

    @@ -1132,7 +1132,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L68"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L68"> createTestUser()

    @@ -1154,7 +1154,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L82"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L82"> createTestUser(p)

    @@ -1176,7 +1176,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L496"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L496"> getCompleted(actionPlanId)

    @@ -1198,7 +1198,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTestUtilities.cls#L472"> getNonDefaultAvailableTaskRecordType()

    diff --git a/docs/ActionPlansTriggerHandlers.html b/docs/ActionPlansTriggerHandlers.html index 6ae118e2..af129c59 100644 --- a/docs/ActionPlansTriggerHandlers.html +++ b/docs/ActionPlansTriggerHandlers.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L22"> ActionPlansTriggerHandlers

    @@ -371,7 +371,7 @@

    ActionPlansTriggerHandlers Properties + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L29"> bypassTaskTrigger @@ -498,7 +498,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L37"> actionPlansSObjectTriggerHandler(sObjectName)

    @@ -528,7 +528,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L53"> actionPlansSObjectTriggerHandler(newRecords, oldRecords, newRecordsMap, oldRecordsMap, triggerEvent, sObjectName)

    @@ -576,7 +576,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L822"> allowChangeParentStatus(apTaskTemplateIds)

    @@ -603,7 +603,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L837"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L837"> deleteActionPlans(relActionPlansIds)

    @@ -627,7 +627,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L226"> fillRelatedRecordFields(newRecords)

    @@ -654,7 +654,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L868"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L868"> forceSynchronous()

    @@ -676,7 +676,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L859"> futureDeleteActionPlans(relActionPlansIds)

    @@ -704,7 +704,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L797"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L797"> getRelationshipName(recordId)

    @@ -726,7 +726,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L131"> triggerhandlerActionPlan(newRecords, oldRecords, newRecordsMap, oldRecordsMap, triggerEvent)

    @@ -774,7 +774,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L694"> triggerhandlerActionPlanAccount(newRecords, oldRecords, newRecordsMap, oldRecordsMap, triggerEvent)

    @@ -813,7 +813,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L637"> triggerhandlerActionPlanLead(newRecords, oldRecords, newRecordsMap, oldRecordsMap, triggerEvent)

    @@ -850,7 +850,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L261"> triggerhandlerActionPlanTask(newRecords, oldRecords, newRecordsMap, oldRecordsMap, triggerEvent)

    @@ -889,7 +889,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L379"> triggerhandlerActionPlanTemplate(newRecords, oldRecords, oldRecordsMap, triggerEvent)

    @@ -925,7 +925,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L416"> triggerhandlerActionPlanTemplateTask(newRecords, oldRecords, oldRecordsMap, triggerEvent)

    @@ -961,7 +961,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L468"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L468"> triggerhandlerTask(newRecords, oldRecords, triggerEvent)

    @@ -997,7 +997,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L773"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansTriggerHandlers.cls#L773"> validateActionPlans(actionPlans)

    diff --git a/docs/ActionPlansUtilities.html b/docs/ActionPlansUtilities.html index 75f64a0f..fdfac497 100644 --- a/docs/ActionPlansUtilities.html +++ b/docs/ActionPlansUtilities.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L18"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L18"> ActionPlansUtilities

    @@ -368,7 +368,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L69"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L69"> apCustomRelationshipFields @@ -385,7 +385,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L567"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L567"> apSettings @@ -402,7 +402,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L529"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L529"> canDisplayReminder @@ -419,7 +419,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L545"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L545"> checkReminderByDefault @@ -436,7 +436,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L363"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L363"> closedTaskStatuses @@ -453,7 +453,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L670"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L670"> dayOfWeekEnglish @@ -470,7 +470,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L562"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L562"> defaultMinutesForReminderTime @@ -487,7 +487,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L32"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L32"> MASTER_RECORD_TYPE_ID @@ -504,7 +504,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L22"> MAX_APTASKS @@ -521,7 +521,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L27"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L27"> MAX_APTODELETE @@ -538,7 +538,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L732"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L732"> namespacePrefix @@ -555,7 +555,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L358"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L358"> openTaskStatuses @@ -572,7 +572,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L118"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L118"> prefixToDescribe @@ -589,7 +589,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L140"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L140"> recordIdToRecordName @@ -606,7 +606,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L275"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L275"> taskPriorityDefaultValue @@ -623,7 +623,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L279"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L279"> taskRecordTypePriorityDefaultValues @@ -640,7 +640,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L197"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L197"> taskRecordTypes @@ -657,7 +657,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L218"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L218"> taskRecordTypeStatusDefaultValues @@ -674,7 +674,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L249"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L249"> taskRecordTypeTypeDefaultValues @@ -691,7 +691,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L340"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L340"> taskRTs @@ -708,7 +708,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L214"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L214"> taskStatusDefaultValue @@ -725,7 +725,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L245"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L245"> taskTypeDefaultValue @@ -742,7 +742,7 @@

    ActionPlansUtilities Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L37"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L37"> taskUsesRecordTypes @@ -943,7 +943,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L612"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L612"> actionPlanSubjectToName(subject)

    @@ -965,7 +965,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L622"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L622"> actionPlanSubjectToName(subject, maxChars)

    @@ -990,7 +990,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L697"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L697"> adjustTaskDueDate(actionPlanStartDate, taskDaysFromStart, apSkipDay)

    @@ -1018,7 +1018,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L639"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L639"> canSendEmails()

    @@ -1038,7 +1038,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L499"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L499"> canShareRecord(recordId, recordOwnerId)

    @@ -1069,7 +1069,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L592"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L592"> checkOrgDefaultCustomSetting(insertIfNull)

    @@ -1098,7 +1098,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L523"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L523"> getCanDisplayReminder()

    @@ -1119,7 +1119,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L486"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L486"> getCanTransfer(recordId)

    @@ -1145,7 +1145,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L535"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L535"> getCheckReminderByDefault()

    @@ -1165,7 +1165,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L369"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L369"> getClosedTaskStatuses()

    @@ -1187,7 +1187,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L75"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L75"> getCustomRelationshipFields()

    @@ -1209,7 +1209,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L572"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L572"> getCustomSetting()

    @@ -1227,7 +1227,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L661"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L661"> getDayOfWeek(theDate)

    @@ -1253,7 +1253,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L551"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L551"> getDefaultReminderMinutes()

    @@ -1271,7 +1271,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L308"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L308"> getDefaultTaskRecordTypeId()

    @@ -1289,7 +1289,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L472"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L472"> getEscapedPageParameter(paramKey)

    @@ -1320,7 +1320,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L387"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L387"> getFieldOptions(objectname, fieldname, requireValue)

    @@ -1352,7 +1352,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L411"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L411"> getHoursOption()

    @@ -1370,7 +1370,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L724"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L724"> getIsLex()

    @@ -1388,7 +1388,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L110"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L110"> getObjectKeyPrefix(objName)

    @@ -1413,7 +1413,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L346"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L346"> getOpenTaskStatuses()

    @@ -1431,7 +1431,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L125"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L125"> getRelatedSObjectDescribe(recordId)

    @@ -1459,7 +1459,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L284"> getTaskRecordTypePriorityDefaultValues()

    @@ -1480,7 +1480,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L203"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L203"> getTaskRecordTypes()

    @@ -1500,7 +1500,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L223"> getTaskRecordTypeStatusDefaultValues()

    @@ -1520,7 +1520,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L254"> getTaskRecordTypeTypeDefaultValues()

    @@ -1541,7 +1541,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L327"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L327"> getTaskRTPicklistValues()

    @@ -1559,7 +1559,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L686"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L686"> getWeekendDay(developerName)

    @@ -1585,7 +1585,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L750"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L750"> idStartsWith(idParam, compareString)

    @@ -1612,7 +1612,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L59"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L59"> onPageLoad()

    @@ -1637,7 +1637,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L148"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls#L148"> queryRecordIDToRecordName(recordIDs)

    diff --git a/docs/ActionPlansUtilitiesTest.html b/docs/ActionPlansUtilitiesTest.html index 514502df..612b3fe4 100644 --- a/docs/ActionPlansUtilitiesTest.html +++ b/docs/ActionPlansUtilitiesTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L19"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L19"> ActionPlansUtilitiesTest

    @@ -436,7 +436,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L95"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L95"> account()

    @@ -451,7 +451,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L128"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L128"> campaign()

    @@ -466,7 +466,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L172"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L172"> cancel()

    @@ -481,7 +481,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L123"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L123"> case()

    @@ -496,7 +496,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L105"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L105"> contact()

    @@ -511,7 +511,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L133"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L133"> contract()

    @@ -526,7 +526,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L254"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L254"> deleteActionPlans()

    @@ -541,7 +541,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L287"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L287"> doChatterPost(objectNames)

    @@ -561,7 +561,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L362"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L362"> doChatterPostPart1()

    @@ -576,7 +576,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L370"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L370"> doChatterPostPart2()

    @@ -591,7 +591,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L118"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L118"> lead()

    @@ -606,7 +606,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L405"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L405"> makeAppTask(ap)

    @@ -634,7 +634,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L21"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L21"> makeData()

    @@ -649,7 +649,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L377"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L377"> randomWord()

    @@ -664,7 +664,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L227"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L227"> relatedObjectId()

    @@ -679,7 +679,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L65"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L65"> saveMultiple()

    @@ -694,7 +694,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L33"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L33"> saveSingle()

    @@ -709,7 +709,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L145"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L145"> testObject(objectName, recordId)

    @@ -741,7 +741,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L383"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/ActionPlansUtilitiesTest.cls#L383"> utilitiesRecordTypes()

    diff --git a/docs/CanTheUser.html b/docs/CanTheUser.html index 9c5adafa..b9e7e5b1 100644 --- a/docs/CanTheUser.html +++ b/docs/CanTheUser.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L16"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L16"> CanTheUser

    @@ -378,7 +378,7 @@

    CanTheUser Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L18"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L18"> accessibleFieldsByObject @@ -398,7 +398,7 @@

    CanTheUser Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L41"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L41"> memoizedFLSResults @@ -419,7 +419,7 @@

    CanTheUser Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L20"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L20"> updatableFieldsByObject @@ -449,7 +449,7 @@

    Enums

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L22"> CrudType @@ -465,7 +465,7 @@

    Enums

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L30"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L30"> FLSType @@ -607,7 +607,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L293"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L293"> bulkFLSAccessible(obj, fields)

    @@ -635,7 +635,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L324"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L324"> bulkFLSUpdatable(obj, fields)

    @@ -663,7 +663,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L353"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L353"> calculateFLS(objType)

    @@ -687,7 +687,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L104"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L104"> create(obj)

    @@ -713,7 +713,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L115"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L115"> create(objs)

    @@ -737,7 +737,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L127"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L127"> create(objName)

    @@ -762,7 +762,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L60"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L60"> crud(obj, permission)

    @@ -781,7 +781,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L85"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L85"> crud(objs, permission)

    @@ -796,7 +796,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L90"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L90"> crud(objectName, permission)

    @@ -811,7 +811,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L244"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L244"> destroy(obj)

    @@ -837,7 +837,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L254"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L254"> destroy(objs)

    @@ -860,7 +860,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L266"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L266"> destroy(objName)

    @@ -885,7 +885,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L175"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L175"> edit(obj)

    @@ -911,7 +911,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L185"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L185"> edit(objs)

    @@ -934,7 +934,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L197"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L197"> edit(objName)

    @@ -959,7 +959,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L280"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L280"> flsAccessible(obj, field)

    @@ -992,7 +992,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L311"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L311"> flsUpdatable(obj, field)

    @@ -1025,7 +1025,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L340"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L340"> getFLSForFieldOnObject(obj, field, checkType)

    @@ -1055,7 +1055,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L139"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L139"> read(obj)

    @@ -1081,7 +1081,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L151"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L151"> read(objs)

    @@ -1106,7 +1106,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L163"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L163"> read(objName)

    @@ -1131,7 +1131,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L209"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L209"> ups(obj)

    @@ -1157,7 +1157,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L220"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L220"> ups(objs)

    @@ -1180,7 +1180,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L232"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L232"> ups(objName)

    diff --git a/docs/CanTheUserTest.html b/docs/CanTheUserTest.html index d30aca38..23a0f4cd 100644 --- a/docs/CanTheUserTest.html +++ b/docs/CanTheUserTest.html @@ -334,7 +334,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L16"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L16"> CanTheUserTest

    @@ -422,7 +422,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L29"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L29"> canCrudAccountCreatePositive()

    @@ -437,7 +437,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L84"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L84"> canCrudAccountDeletePositive()

    @@ -452,7 +452,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L51"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L51"> canCrudAccountReadPositive()

    @@ -467,7 +467,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L64"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L64"> canCrudAccountUpdatePositive()

    @@ -482,7 +482,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L41"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L41"> canCrudCreateAccountPositive()

    @@ -497,7 +497,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L91"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L91"> canCrudDestroyAccountPositive()

    @@ -512,7 +512,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L70"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L70"> canCrudEditAccountPositive()

    @@ -527,7 +527,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L57"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L57"> canCrudReadAccountPositive()

    @@ -542,7 +542,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L77"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L77"> canCrudUpsertAccountPositive()

    @@ -557,7 +557,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L20"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L20"> generateAccounts()

    @@ -572,7 +572,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L108"> getBulkFLSAccessibleWithAccountPositive()

    @@ -587,7 +587,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L117"> getBulkFLSAccessibleWithAccountPositiveWithNegativeResults()

    @@ -602,7 +602,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L126"> getBulkFLSUpdatableWithAccountPositive()

    @@ -617,7 +617,7 @@

    + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L135"> getBulkFLSUpdatableWithAccountPositiveWithNegativeResults()

    @@ -632,7 +632,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L103"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L103"> getFLSofAccountIDNegative()

    @@ -647,7 +647,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/tree/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L98"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/tests/CanTheUserTest.cls#L98"> getFLSofAccountNamePositive()

    diff --git a/docs/assets/INSTALLATION.html b/docs/assets/INSTALLATION.html deleted file mode 100644 index 5a4aee37..00000000 --- a/docs/assets/INSTALLATION.html +++ /dev/null @@ -1,148 +0,0 @@ - -

    Action Plans Installation

    -

    Follow these instructions to deploy Action Plans to your org.

    -

    Deployment Methods

    -

    AppExchange: The managed package is the best way to go - it will let you upgrade seamlessly as features are added.

    -

    Installing the App Using a Scratch Org: Fast and easy way to work with this app in a scratch org

    -

    Installing the app using a Developer Edition Org or a Sandbox: Useful when tackling Trailhead Badges or if you want the app deployed to a more permanent environment than a scratch org.

    -

    Optional installation instructions: Installing sample Action Plan Template and other metadata

    -
    - - -

    Action Plans: This is the best way to install the package, which you can easily upgrade as features are added.

    -

    Installing the App using a Scratch Org

    -
      -
    1. Set up your environment. Follow the steps in the Quick Start: Lightning Web Components Trailhead project. The steps include:

      -
        -
      • Enable Dev Hub in your Trailhead Playground or hub org
      • -
      • Install Salesforce CLI
      • -
      • Install Visual Studio Code
      • -
      • Install the Visual Studio Code Salesforce extensions
      • -
      -
    2. -
    3. If you haven't already done so, authorize your hub org and provide it with an alias (myhuborg in the command below):

      -
      sfdx auth:web:login -d -a myhuborg
      -
      -
    4. -
    5. Clone this repository:

      -
      git clone https://github.com/SalesforceLabs/ActionPlansV4
      -cd ActionPlansV4
      -
      -
    6. -
    7. From the terminal window, run the installation script

      -
      npm run-script scratchorg
      -
      -

      or

      -
      . scripts/scratchorg.sh
      -
      -
    8. -
    9. That's it!

      -
    10. -
    -

    Installing the App using a Developer Edition Org or your own Sandbox Org

    -

    Follow this set of instructions if you want to deploy the app to a more permanent environment than a Scratch org.
    This includes non source-tracked orgs such as a free Developer Edition Org or a Trailhead Playground, or your own Sandbox.

    -

    Start from a brand-new environment to avoid conflicts with previous work you may have done.

    -
      -
    1. Authorize your org and provide it with an alias (myorg in the command below):

      -
      sfdx auth:web:login -s -a myorg
      -
      -
    2. -
    3. Clone this repository:

      -
      git clone https://github.com/SalesforceLabs/ActionPlansV4
      -cd ActionPlansV4
      -
      -
    4. -
    5. If you are setting up a Developer Edition: go to Setup, and under My Domain, register a My Domain. Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first.

      -
    6. -
    7. To run all the next steps at once, run this command in the terminal:

      -
      . scripts/unmanaged.sh
      -
      -

      The org will open. That's it!

      -

      Or run these steps one by one

      -
        -
      1. Run this command to deploy the app.

        -
        sf deploy metadata  --source-dir sfdx-source/LabsActionPlans
        -
        -
      2. -
      3. Assign the Action_Plans_Admin permission set to the admin user.

        -
        sf org assign permset --name Action_Plans_Admin
        -
        -
      4. -
      5. (Optional) Load sample metadata (see below)

        -
        sf deploy metadata  --source-dir sfdx-source/unmanaged
        -
        -
      6. -
      7. If your org isn't already open, open it now:

        -
        sf org open --target-org myorg
        -
        -
      8. -
      -
    8. -
    9. In App Launcher, select the Action Plans app.

      -
    10. -
    -

    Optional Installation Instructions

    -

    This repository contains several files that are relevant if you want to add sample data, or integrate modern web development tooling to your Salesforce development processes or to your continuous integration/continuous deployment processes.

    -

    Data/Metadata Import (Optional - NOT available if using the AppExchange managed package)

    -
      -
    • This repository creates sample data (Accounts, Contacts, Leads) if you choose to create a scratch org. To prevent this, go to the scratch org definition and change hasSampleData to false.

      -
      "hasSampleData": false,
      -
      -
    • -
    • To create a sample Action Plan Template for Account onboarding, run the following:

      -
      sfdx force:apex:execute -f ./data/sample-data.apex
      -
      -
    • -
    • To create

      -
        -
      • a sample Flow that uses the sample template
      • -
      • a sample Account layout
      • -
      • a sample Task layout
      • -
      • a sample report on open Action Plan-related Tasks
      • -
      -
       sf deploy metadata  --source-dir sfdx-source/unmanaged
      -
      -
    • -
    • You can also create other sample Account and Contact records by running the following command:

      -
      sf data import tree --plan ./data/action-plan-data-plan.json
      -
      -
    • -
    -

    Data/Metadata Import (Optional - ONLY if using the AppExchange managed package)

    -
      -
    • When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following:

      -
      sfdx force:apex:execute -f ./data/sample-data-managed.apex
      -
      -
    • -
    • To create

      -
        -
      • a sample Flow that uses the sample template
      • -
      • a sample Account layout
      • -
      • a sample Task layout
      • -
      • a sample report on open Action Plan-related Tasks
      • -
      -
      sf deploy metadata  --source-dir sfdx-source/unmanagedExtension
      -
      -
    • -
    • You can also create other sample Account and Contact records by running the following command:

      -
      sf data import tree --plan ./data/action-plan-data-plan.json 
      -
      -
    • -
    -

    Code formatting

    -

    Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the Prettier formatter.

    -

    Prettier Apex is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow these instructions from the Salesforce Extensions site.

    -

    Code linting

    -

    ESLint is a popular JavaScript linting tool used to identify stylistic errors and erroneous constructs. To use ESLint with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .eslintignore file is provided as part of this repository to exclude specific files from the linting process in the context of Lightning Web Components development.

    -

    Pre-commit hook

    -

    This repository also comes with a package.json file that makes it easy to set up a pre-commit hook that enforces code formatting and linting by running Prettier and ESLint every time you git commit changes.

    -

    To set up the formatting and linting pre-commit hook:

    -
      -
    1. Install Node.js if you haven't already done so
    2. -
    3. Run npm install in your project's root folder to install the Husky, ESLint, and Prettier modules (Note: Mac users should verify that Xcode command line tools are installed before running this command.)
    4. -
    -

    Husky will now run Prettier and ESLint automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. The commit will fail if linting errors are detected. You can also run the formatting and linting from the command line using the following commands (check out package.json for the full list):

    -
    npm run lint:lwc
    -npm run prettier
    -
    - diff --git a/docs/assets/search-idx.js b/docs/assets/search-idx.js index 5efb3a87..78157537 100644 --- a/docs/assets/search-idx.js +++ b/docs/assets/search-idx.js @@ -2,7 +2,17 @@ export default [ { "title": "Home", "fileName": "index.html", - "text": "Home Action Plans Changelog Action Plans Installation and Setup Please follow installation instructions, shown on the Installation page AppExchange AppExchange Listing Post-intall extras Scratch Org Developer Edition / Sandbox Apex Code Documentation About Action Plans Action Plans helps your organization encapsulate best practices into easily sharable, reusable task templates. You can create Action Plans for the following objects: Accounts Contacts Leads Opportunities Campaigns Contracts Cases Person Accounts Custom Objects Getting Help Action Plans is unsupported. For community assistance with Action Plans, please visit Salesforce Trailblazer Community . To submit ideas or issues, please visit Action Plans on Github . Community Action Plans is open source software. We welcome your issue reports, ideas, documentation, code tweaks and all other participation. Learn more . Features: Export and share your Action Plan Templates with other orgs. Import Action Plan Templates. Supports Task reminder times. Action Plans Settings controls behavior around Chatter Notifications, actions when a Lead is converted, and default Task assignment behavior Invocable Apex allows automatic Action Plan creation from a Template in Process Builder and Flow Post Install Configuration Getting started is easy. For each object, you need to add a button to the list view, add a button to the detail page. For Accounts, follow these steps:\" Update Action Plans Custom Settings Change these setting by editing Action Plan Settings, and updating values at either the organization level, profile levels, or user levels. Navigate to Setup > Develop > Custom Settings. Click on 'Manage' next to Action Plans Settings . Click the 'New' button near 'Default Organizational Level Value'. Check the values that you want to enable. Enable Chatter Post places a post in the related record's Chatter Feed(if Chatter is enabled for that object). If unchecked, Action Plans does not create a Feed Post. Unassigned Task Defaults to Record Owner ensures that Action Plan Template tasks with a blank 'Assigned To' field go to the related record's owner. If unchecked, tasks with a blank 'Assigned To' field are assigned to the running user. Tasks can be assigned to specific people on Action Plan Templates, which overrides this setting. Default Object on Lead Conversion specifies that if an Action Plan is related to a Lead, whether the Action Plan should be moved to the converted Account, Contact, or Opportunity when the Lead is converted. The default is Contact. Action Plans Business Hours ID and Use Business Hours are reserved for future functionality. Weekends: Custom Metadata Modify Custom Metadata Weekend Day to indicate which days of the week are the weekend and how many days to move a task forward or backwards to move it to the end of the previous week or the start of the next week. This allows you to work with a different weekend, or to avoid assigning any task to be due on any specific day of the week.All weekdays should have 0 in both numeric fields. Update Your Page & Search Layout Configurations Create Action Plans Buttons For each object, you need to add a button to the list view, For Accounts, follow these steps: Navigate to Setup > Object Manager > Account > Search Layouts for Salesforce Classic Click on \"Edit\" from the menu near \"List View.\" Move the \"Create Account Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Navigate to Setup > Object Manager > Account > Page Layouts. Note: the package includes a default \"Action Plan Layout\" for your reference. You do not need to use it. Click on \"Edit\" near one of your standard Account Page Layouts. Add \"Action Plans\" related list to the page. Edit the properties of the related list by clicking the configuration button above it. Expand \"Buttons\" section, clear the \"New\" checkbox and move \"Create Account Action Plan\" to the Selected buttons. Update the fields in the related list to meet your needs. Recommended fields include Start Date, Action Plan Status, Action Plan Template, Plan Start Date. Click \"Save.\" Repeat these steps for the other standard objects Action Plans supports: Contacts, Leads, Opportunities, etc. Delete Action Plans Buttons Follow this steps for Action Plan Object: Navigate to Setup > Object Manager > Action Plan > Search Layouts. Click on \"Edit\" near \"List View.\" Move the \"Delete Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Task Layout Optionally, add the \"Action Plan Task\" field to your Task page layout, but it should be Read-Only , as clearing this field will break the ability to track Action Plan progress. Security Update Your Org-Wide Default Sharing Settings Action Plans includes two shareable objects: Action Plan and Action Plan Template . You may configure your sharing settings in whatever way works for your organization. If you want anyone to be able to create and see plans and their templates, use Public Read/Write for Action Plan and Action Plan Template. If you want anyone to be able to see Action Plans and Templates without being able to change them, select \"Public Read Only.\" If your Org-Wide Default sharing settings are set to Private for Action Plan or Action Plan Template, you may need to implement custom automation to share Action Plan records with the appropriate people. You may do this via Apex sharing, or you may use other automation, to assign ownership of the Action Plan itself to the related record owner or any desired user. To use Action Plans, most users require access only to Tasks . They can be assigned Tasks without knowing that these Tasks are part of an Action Plan. Any changes they make to a Task's Status will be reflected in the related Action Plan Task Template record automatically. No Permission Set is required. Use Permission Sets For Security Assign the appropriate Permission Set(s) to each user who will need to use Action Plans: Action Plans Admin: Full permissions for Action Plans, Action Plan Templates, AP Tasks and APT Task Templates. Action Plans Template Creator: Full permissions for Action Plan Templates and AP Template Tasks. No Action Plan access. Action Plans Creator: Read, Create, Edit, Delete for Action Plans and AP Tasks. Read-only for Action Plan Templates and APT Task Templates. Action Plans Import/Export: Access to export and import Action Plan Template records. View the appropriate button for export and tab for import. Action Plans User: Read-only for Action Plans and AP Tasks. Edit permission for Tasks should be provided via the user's profile or other permission sets. Uses for each Permission Set: Some users may require visibility into the Action Plans related to those Tasks. These users need the Action Plans User  Permission Set. It gives Read-only access to Action Plan. Some users may need to create Action Plans from Templates but not edit the templates themselves. The Action Plans Creator  Permission Set gives read-only access to Action Plan Templates, and Read, Create, Edit, and Delete access to Action Plans. Users who can create and edit Action Plan Templates require the Action Plans Template Creator  Permission Set. This includes permission to Read, Create, Edit, and Delete all Action Plan Templates only. It does not include any Action Plan or Task permissions. If these users require Action Plan access, other Permission Sets should be used as well. A custom permission allows exporting of Action Plan Templates. Intended as an add-on for Action Plans Template Creator , the Action Plans Import/Export permission set allows the viewing of the Export button on Template detail pages and to the Import tab. The custom permission Action Plan Template Export allows exporting of Action Plan Templates and associated tasks. Use this permission with care, as it is a potential security hole for your org's proprietary templates. This is a great way to move templates from a Sandbox to Production org. Action Plans Admin  includes Modify All permissions for all four Action Plan objects(Action Plan, Action Plan Task Template, Action Plan Template, and Action Plan Template Task Template). The custom permission allows exporting Action Plan Templates. Note: The Apex used in Flows or via triggers does not require special permissions to run. Using Action Plans with Custom Objects To Start Using an Object with Action Plans Create the object and be sure to check \"Track Activities\" for the object attrributes Create a lookup field from Action Plan to the object. Name the field the same as the object name. The field label can be anything. As an example, if you have a custom object named MyObject__c , you must name the field on Action Plan MyObject__c Add the field to the Related Objects fieldset on Action Plan. The related object will now be available for selection when creating a new Action Plan and relating it to an object. Add the following code to the object trigger in before delete and after undelete contexts(removing the LabsActionPlans namespace if you're not using the managed package):LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' ); Test Code for Additional Objects Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage(not a best-practice!) just make a test method inserting and then deleting a record.Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet. Adding a New Custom Object Action Plan button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template.(Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link Give it a label and name, such as \"New MyObject Action Plan\" Display Type is List Button. Uncheck the list checkbox. Use the following format for the button(removing the LabsActionPlans__ namespace if you're not using the managed package):{!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType=\"CustomObject__c\", refId=CustomObject__c.Id] )} Create Action Plans for multiple Custom Object records Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: Then create a list view button for that object and add it to your list views. To Stop Using an Object with Action Plans If you want, for example, not to allow relating Action Plans to Contracts, remove the Contract field from the Action Plan Related Objects fieldset.There is no need to delete the field from the Action Plan object. Create a Template Now you're ready to create your first template. Navigate to the Action Plans Templates tab. Click on the \"New Action Plan Template\" button. The template screen looks like this: Name - Template Name. Description - An explanation of how the template should be used. Skip Weekends - Allows you to automatically reschedule a task that would fall on a weekend to either the day before or day after the weekend. When checked, a picklist appears, allowing you to select before or after the weekend. Action - Click \"X\" to eliminate a step in a template. Subject - What the task is to do. Task Dependency - The dependent task will only be created once the controlling task is completed. Days After- This value determines the due date of the task. For tasks with no dependency, the task's due date will be offset from the plan start date. For tasks with a dependency, the due date will be offset from the expected due date of the task on which it depends. Assigned To - Looks up to user. Leave blank if you want to assign the task dynamically.When assigning dynamically, the default behavior will be to assign the task to the running user. You can also have the system assign it to the record owner by changing your Action Plan Settings. See \"Post Install Configuration\" guide above. Category - What type of activity. Priority - Taken from Task priorities and Record Type(if applicable). Email - Send a standard New Task email when checked. For Tasks depending on others, the email will be sent when the task is created. Reminder - This check box will define the default behaviour for reminders when applying the template to create an Action plan . If it's left unchecked, in the Action Plan Creation page the reminders will be initially disabled If it's checked the reminders will be available. User Reminder settings: Go Personal Setup > My Personal Information > Reminders, if the option \"By default, set reminder on Tasks to:\" is checked then the selected time will be the default option for task template reminders. User setting for Activity Object : Go App Setup> Feature Settings > Sales > Activity Settings, If \"Enable Activity Reminders\" is not checked, then reminders column will not be displayed in the Action Plan creation page. Comments - Comments supporting a task. Add New Task - Adds an additional row to the tasks grid. Save - Saves the template. Task Record Types If your org uses Task Record Types, you must specify which Record Type to use for all Tasks from each Action Plan and Template record. This will affect the Status values available for each related Action Plan Task. This cannot be changed once an Action Plan or Template is created. Only one record type may be specified for all the Tasks on that Action Plan or Template. Create Action Plans for Several Accounts Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the \"Create Account Action Plans\" button. Select the template you want to use by typing the name on the lookup and clicking on it. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. Save the Action Plan. Note: Action Plan creation is handled by a queueable(asynchronous) process. It can take a couple of minutes to be able to view all created records. Verify the Action Plan and the tasks. Complete the first task on the Action Plan. Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete. Task notifications for Flow-created Action Plans User Settings To receive Task notifications if Send Email is selected on an Action Plan Task, ensure that users have been allowed to control receipt of Task notification emails(this is active by default), and that they have allowed email notifications to be sent(this is also enabled by default). See Salesforce H&T for more information. Org Setting The Send Email field on Action Plan Task must be checked to send a email notifications, and the setting Allow Flow to send delegated task notifications on records created through Apex must also be enabled. Go to Settings > Feature Settings > Sales > Activity Settings to check that box and allow email notifications to be sent via Flow-created Action Plans. Action Plan Tasks If the user has enabled task notification, then those will be sent when an Action Plan Task is created. If the Action Plan Task is updated to a new owner, and if the Send Email box is NOT checked, the user may still receive a task notification if that is in their personal settings. If the box is checked, assuming that notifications are enabled for that user, the email will be sent. Queues Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the createdTasks(which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. Automate Action Plan Creation Flow Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.Days from trigger to start Action Plan is optional(and defaults to 0). The first task will be due the number of days(specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. (Optional) Sample Action Plan Template for Account onboarding Run the following: sfdx force:apex:execute -f ./data/sample-data.apex To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow Create an Account and set Type to any value that starts with 'Customer' Process Builder It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans. It is also recommended NOT to use Process Builder at all! Apex To call the invocable Apex from a Trigger or Apex class, adapt the following sample code: UNMANAGED CODE String apTemplateName; ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ ActionPlanCreateInvocable.CreateActionPlanRequest req = new ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplate.Id; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 0; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); MANAGED PACKAGE String apTemplateName; LabsActionPlans__ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest req = new LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplateName; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 1; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = LabsActionPlans.ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); ActionPlanCreateInvocable.CreateActionPlanRequest class Variables: String templateNameOrID (required) Name is not unique, so ID is preferred Id relatedRecordID (required) Must have a relationship field named the related record object name from Action Plan object Integer daysToActionPlanStart (not required) Defaults to 0, the day the plan is created String actionPlanName (not required) Give the Action Plan a custom name. If not specified, defaults to {Template Name} - {Parent Record Name}. Share Your Templates and Discover Best Practices using Template Export and Template Import Action Plans supports the sharing and discovery of best practices using Template Export and Template Import. How to Share Your Template Export is simple. Navigate to the Template you wish to export. Click on the \"Export\" button. Export creates a simple XML file containing template header and task information. It also includes information about who created the template.Note: It does not include user information or sensitive data about what objects you might use this template with. If you are using Lightning Experience, the exported file is in your Files tab, in your private files library. If you are still using Salesforce Classic, it is in your Documents tab, in your private documents folder. Sharing the file is easy. Email the file to whomever you want to share it with. Do you want to share it with a broader audience? Email the file to Salesforce Labs at labs@salesforce.com . Best Practices: How to Import Import is also simple. Navigate to the \"Import Template\" tab. Select the file you want to import using \"Browse\" and once you've found it click on \"Import Template.\" (Optional) Sample Action Plan Template Import This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder." + "text": "Home Action Plans Changelog Action Plans Installation and Setup Please follow installation instructions, shown on the Installation page AppExchange - Recommended AppExchange Listing Post-intall extras Scratch Org Developer Edition / Sandbox Apex Code Documentation About Action Plans Action Plans helps your organization encapsulate best practices into easily sharable, reusable task templates. You can create Action Plans for the following objects: Accounts Contacts Leads Opportunities Campaigns Contracts Cases Person Accounts Custom Objects Getting Help Action Plans is unsupported. For community assistance with Action Plans, please visit Salesforce Trailblazer Community . To submit ideas or issues, please visit Action Plans on Github . Community Action Plans is open source software. We welcome your issue reports, ideas, documentation, code tweaks and all other participation. Learn more . Features: Export and share your Action Plan Templates with other orgs. Import Action Plan Templates. Supports Task reminder times. Action Plans Settings controls behavior around Chatter Notifications, actions when a Lead is converted, and default Task assignment behavior Invocable Apex allows automatic Action Plan creation from a Template in Process Builder and Flow Post Install Configuration Getting started is easy. For each object, you need to add a button to the list view, add a button to the detail page. For Accounts, follow these steps:\" Update Action Plans Custom Settings Change these setting by editing Action Plan Settings, and updating values at either the organization level, profile levels, or user levels. Navigate to Setup > Develop > Custom Settings. Click on 'Manage' next to Action Plans Settings . Click the 'New' button near 'Default Organizational Level Value'. Check the values that you want to enable. Enable Chatter Post places a post in the related record's Chatter Feed(if Chatter is enabled for that object). If unchecked, Action Plans does not create a Feed Post. Unassigned Task Defaults to Record Owner ensures that Action Plan Template tasks with a blank 'Assigned To' field go to the related record's owner. If unchecked, tasks with a blank 'Assigned To' field are assigned to the running user. Tasks can be assigned to specific people on Action Plan Templates, which overrides this setting. Default Object on Lead Conversion specifies that if an Action Plan is related to a Lead, whether the Action Plan should be moved to the converted Account, Contact, or Opportunity when the Lead is converted. The default is Contact. Action Plans Business Hours ID and Use Business Hours are reserved for future functionality. Weekends: Custom Metadata Modify Custom Metadata Weekend Day to indicate which days of the week are the weekend and how many days to move a task forward or backwards to move it to the end of the previous week or the start of the next week. This allows you to work with a different weekend, or to avoid assigning any task to be due on any specific day of the week.All weekdays should have 0 in both numeric fields. Update Your Page & Search Layout Configurations Create Action Plans Buttons For each object, you need to add a button to the list view, For Accounts, follow these steps: Navigate to Setup > Object Manager > Account > Search Layouts for Salesforce Classic Click on \"Edit\" from the menu near \"List View.\" Move the \"Create Account Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Navigate to Setup > Object Manager > Account > Page Layouts. Note: the package includes a default \"Action Plan Layout\" for your reference. You do not need to use it. Click on \"Edit\" near one of your standard Account Page Layouts. Add \"Action Plans\" related list to the page. Edit the properties of the related list by clicking the configuration button above it. Expand \"Buttons\" section, clear the \"New\" checkbox and move \"Create Account Action Plan\" to the Selected buttons. Update the fields in the related list to meet your needs. Recommended fields include Start Date, Action Plan Status, Action Plan Template, Plan Start Date. Click \"Save.\" Repeat these steps for the other standard objects Action Plans supports: Contacts, Leads, Opportunities, etc. Delete Action Plans Buttons Follow this steps for Action Plan Object: Navigate to Setup > Object Manager > Action Plan > Search Layouts. Click on \"Edit\" near \"List View.\" Move the \"Delete Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Task Layout Optionally, add the \"Action Plan Task\" field to your Task page layout, but it should be Read-Only , as clearing this field will break the ability to track Action Plan progress. Security Update Your Org-Wide Default Sharing Settings Action Plans includes two shareable objects: Action Plan and Action Plan Template . You may configure your sharing settings in whatever way works for your organization. If you want anyone to be able to create and see plans and their templates, use Public Read/Write for Action Plan and Action Plan Template. If you want anyone to be able to see Action Plans and Templates without being able to change them, select \"Public Read Only.\" If your Org-Wide Default sharing settings are set to Private for Action Plan or Action Plan Template, you may need to implement custom automation to share Action Plan records with the appropriate people. You may do this via Apex sharing, or you may use other automation, to assign ownership of the Action Plan itself to the related record owner or any desired user. To use Action Plans, most users require access only to Tasks . They can be assigned Tasks without knowing that these Tasks are part of an Action Plan. Any changes they make to a Task's Status will be reflected in the related Action Plan Task Template record automatically. No Permission Set is required. Use Permission Sets For Security Assign the appropriate Permission Set(s) to each user who will need to use Action Plans: Action Plans Admin: Full permissions for Action Plans, Action Plan Templates, AP Tasks and APT Task Templates. Action Plans Template Creator: Full permissions for Action Plan Templates and AP Template Tasks. No Action Plan access. Action Plans Creator: Read, Create, Edit, Delete for Action Plans and AP Tasks. Read-only for Action Plan Templates and APT Task Templates. Action Plans Import/Export: Access to export and import Action Plan Template records. View the appropriate button for export and tab for import. Action Plans User: Read-only for Action Plans and AP Tasks. Edit permission for Tasks should be provided via the user's profile or other permission sets. Uses for each Permission Set: Some users may require visibility into the Action Plans related to those Tasks. These users need the Action Plans User  Permission Set. It gives Read-only access to Action Plan. Some users may need to create Action Plans from Templates but not edit the templates themselves. The Action Plans Creator  Permission Set gives read-only access to Action Plan Templates, and Read, Create, Edit, and Delete access to Action Plans. Users who can create and edit Action Plan Templates require the Action Plans Template Creator  Permission Set. This includes permission to Read, Create, Edit, and Delete all Action Plan Templates only. It does not include any Action Plan or Task permissions. If these users require Action Plan access, other Permission Sets should be used as well. A custom permission allows exporting of Action Plan Templates. Intended as an add-on for Action Plans Template Creator , the Action Plans Import/Export permission set allows the viewing of the Export button on Template detail pages and to the Import tab. The custom permission Action Plan Template Export allows exporting of Action Plan Templates and associated tasks. Use this permission with care, as it is a potential security hole for your org's proprietary templates. This is a great way to move templates from a Sandbox to Production org. Action Plans Admin  includes Modify All permissions for all four Action Plan objects(Action Plan, Action Plan Task Template, Action Plan Template, and Action Plan Template Task Template). The custom permission allows exporting Action Plan Templates. Note: The Apex used in Flows or via triggers does not require special permissions to run. Using Action Plans with Custom Objects To Start Using an Object with Action Plans Create the object and be sure to check \"Track Activities\" for the object attrributes Create a lookup field from Action Plan to the object. Name the field the same as the object name. The field label can be anything. As an example, if you have a custom object named MyObject__c , you must name the field on Action Plan MyObject__c Add the field to the Related Objects fieldset on Action Plan. The related object will now be available for selection when creating a new Action Plan and relating it to an object. Add the following code to the object trigger in before delete and after undelete contexts(removing the LabsActionPlans namespace if you're not using the managed package):LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' ); Test Code for Additional Objects Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage(not a best-practice!) just make a test method inserting and then deleting a record.Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet. Adding a New Custom Object Action Plan button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template.(Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link Give it a label and name, such as \"New MyObject Action Plan\" Display Type is List Button. Uncheck the list checkbox. Use the following format for the button(removing the LabsActionPlans__ namespace if you're not using the managed package):{!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType=\"CustomObject__c\", refId=CustomObject__c.Id] )} Create Action Plans for multiple Custom Object records Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: Then create a list view button for that object and add it to your list views. To Stop Using an Object with Action Plans If you want, for example, not to allow relating Action Plans to Contracts, remove the Contract field from the Action Plan Related Objects fieldset.There is no need to delete the field from the Action Plan object. Create a Template Now you're ready to create your first template. Navigate to the Action Plans Templates tab. Click on the \"New Action Plan Template\" button. The template screen looks like this: Name - Template Name. Description - An explanation of how the template should be used. Skip Weekends - Allows you to automatically reschedule a task that would fall on a weekend to either the day before or day after the weekend. When checked, a picklist appears, allowing you to select before or after the weekend. Action - Click \"X\" to eliminate a step in a template. Subject - What the task is to do. Task Dependency - The dependent task will only be created once the controlling task is completed. Days After- This value determines the due date of the task. For tasks with no dependency, the task's due date will be offset from the plan start date. For tasks with a dependency, the due date will be offset from the expected due date of the task on which it depends. Assigned To - Looks up to user. Leave blank if you want to assign the task dynamically.When assigning dynamically, the default behavior will be to assign the task to the running user. You can also have the system assign it to the record owner by changing your Action Plan Settings. See \"Post Install Configuration\" guide above. Category - What type of activity. Priority - Taken from Task priorities and Record Type(if applicable). Email - Send a standard New Task email when checked. For Tasks depending on others, the email will be sent when the task is created. Reminder - This check box will define the default behaviour for reminders when applying the template to create an Action plan . If it's left unchecked, in the Action Plan Creation page the reminders will be initially disabled If it's checked the reminders will be available. User Reminder settings: Go Personal Setup > My Personal Information > Reminders, if the option \"By default, set reminder on Tasks to:\" is checked then the selected time will be the default option for task template reminders. User setting for Activity Object : Go App Setup> Feature Settings > Sales > Activity Settings, If \"Enable Activity Reminders\" is not checked, then reminders column will not be displayed in the Action Plan creation page. Comments - Comments supporting a task. Add New Task - Adds an additional row to the tasks grid. Save - Saves the template. Task Record Types If your org uses Task Record Types, you must specify which Record Type to use for all Tasks from each Action Plan and Template record. This will affect the Status values available for each related Action Plan Task. This cannot be changed once an Action Plan or Template is created. Only one record type may be specified for all the Tasks on that Action Plan or Template. Create Action Plans for Several Accounts Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the \"Create Account Action Plans\" button. Select the template you want to use by typing the name on the lookup and clicking on it. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. Save the Action Plan. Note: Action Plan creation is handled by a queueable(asynchronous) process. It can take a couple of minutes to be able to view all created records. Verify the Action Plan and the tasks. Complete the first task on the Action Plan. Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete.(A Contact related list is shown here, but this applies equally to Accounts.) Task notifications for Flow-created Action Plans User Settings To receive Task notifications if Send Email is selected on an Action Plan Task, ensure that users have been allowed to control receipt of Task notification emails(this is active by default), and that they have allowed email notifications to be sent(this is also enabled by default). See Salesforce H&T for more information. Org Setting The Send Email field on Action Plan Task must be checked to send a email notifications, and the setting Allow Flow to send delegated task notifications on records created through Apex must also be enabled. Go to Settings > Feature Settings > Sales > Activity Settings to check that box and allow email notifications to be sent via Flow-created Action Plans. Action Plan Tasks If the user has enabled task notification, then those will be sent when an Action Plan Task is created. If the Action Plan Task is updated to a new owner, and if the Send Email box is NOT checked, the user may still receive a task notification if that is in their personal settings. If the box is checked, assuming that notifications are enabled for that user, the email will be sent. Queues Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the created Tasks(which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. Automate Action Plan Creation Flow Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.Days from trigger to start Action Plan is optional(and defaults to 0). The first task will be due the number of days(specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. (Optional) Sample Action Plan Template for Account onboarding Run the following: sfdx force:apex:execute -f ./data/sample-data.apex To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow Create an Account and set Type to any value that starts with 'Customer' Process Builder It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans. It is also recommended NOT to use Process Builder at all! Apex To call the invocable Apex from a Trigger or Apex class, adapt the following sample code: UNMANAGED CODE String apTemplateName; ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ ActionPlanCreateInvocable.CreateActionPlanRequest req = new ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplate.Id; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 0; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); MANAGED PACKAGE String apTemplateName; LabsActionPlans__ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest req = new LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplateName; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 1; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = LabsActionPlans.ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); ActionPlanCreateInvocable.CreateActionPlanRequest class Variables: String templateNameOrID (required) Name is not unique, so ID is preferred Id relatedRecordID (required) Must have a relationship field named the related record object name from Action Plan object Integer daysToActionPlanStart (not required) Defaults to 0, the day the plan is created String actionPlanName (not required) Give the Action Plan a custom name. If not specified, defaults to {Template Name} - {Parent Record Name}. Share Your Templates and Discover Best Practices using Template Export and Template Import Action Plans supports the sharing and discovery of best practices using Template Export and Template Import. How to Share Your Template Export is simple. Navigate to the Template you wish to export. Click on the \"Export\" button. Export creates a simple XML file containing template header and task information. It also includes information about who created the template.Note: It does not include user information or sensitive data about what objects you might use this template with. If you are using Lightning Experience, the exported file is in your Files tab, in your private files library. If you are still using Salesforce Classic, it is in your Documents tab, in your private documents folder. Sharing the file is easy. Email the file to whomever you want to share it with. Do you want to share it with a broader audience? Email the file to Salesforce Labs at labs@salesforce.com . Best Practices: How to Import Import is also simple. Navigate to the \"Import Template\" tab. Select the file you want to import using \"Browse\" and once you've found it click on \"Import Template.\" (Optional) Sample Action Plan Template Import This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder." + }, + { + "title": "installation", + "fileName": "installation.html", + "text": "Action Plans Installation Follow these instructions to deploy Action Plans to your org. Deployment Methods AppExchange : The managed package is the best way to go - it will let you upgrade seamlessly as features are added. Installing the App Using a Scratch Org : Fast and easy way to work with this app in a scratch org Installing the app using a Developer Edition Org or a Sandbox : Useful when tackling Trailhead Badges or if you want the app deployed to a more permanent environment than a scratch org. Optional installation instructions : Installing sample Action Plan Template and other metadata AppExchange(Managed Package - RECOMMENDED) Action Plans : This is the best way to install the package, which you can easily upgrade as features are added. Installing the App using a Scratch Org Set up your environment. Follow the steps in the Quick Start: Lightning Web Components Trailhead project. The steps include: Enable Dev Hub in your Trailhead Playground or hub org Install Salesforce CLI Install Visual Studio Code Install the Visual Studio Code Salesforce extensions If you haven't already done so, authorize your hub org and provide it with an alias(myhuborg in the command below): sfdx auth:web:login -d -a myhuborg Clone this repository: git clone https://github.com/SalesforceLabs/ActionPlansV4 cd ActionPlansV4 From the terminal window, run the installation script npm run-script scratchorg or . scripts/scratchorg.sh That's it! Installing the App using a Developer Edition Org or your own Sandbox Org Follow this set of instructions if you want to deploy the app to a more permanent environment than a Scratch org.This includes non source-tracked orgs such as a free Developer Edition Org or a Trailhead Playground , or your own Sandbox. Start from a brand-new environment to avoid conflicts with previous work you may have done. Authorize your org and provide it with an alias(myorg in the command below): sfdx auth:web:login -s -a myorg Clone this repository: git clone https://github.com/SalesforceLabs/ActionPlansV4 cd ActionPlansV4 If you are setting up a Developer Edition: go to Setup , and under My Domain , register a My Domain . Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first. To run all the next steps at once, run this command in the terminal: . scripts/unmanaged.sh The org will open. That's it! Or run these steps one by one Run this command to deploy the app. sf deploy metadata --source-dir sfdx-source/LabsActionPlans Assign the Action_Plans_Admin permission set to the admin user. sf org assign permset --name Action_Plans_Admin (Optional) Load sample metadata (see below) sf deploy metadata --source-dir sfdx-source/unmanaged If your org isn't already open, open it now: sf org open --target-org myorg In App Launcher, select the Action Plans app. Optional Installation Instructions This repository contains several files that are relevant if you want to add sample data, or integrate modern web development tooling to your Salesforce development processes or to your continuous integration/continuous deployment processes. Data/Metadata Import(Optional - NOT available if using the AppExchange managed package) This repository creates sample data(Accounts, Contacts, Leads) if you choose to create a scratch org. To prevent this, go to the scratch org definition and change hasSampleData to false . \"hasSampleData\": false, To create a sample Action Plan Template for Account onboarding, run the following: sfdx force:apex:execute -f ./data/sample-data.apex To create a sample Flow that uses the sample template a sample Account layout a sample Task layout a sample report on open Action Plan-related Tasks sf deploy metadata --source-dir sfdx-source/unmanaged You can also create other sample Account and Contact records by running the following command: sf data import tree --plan ./data/action-plan-data-plan.json Data/Metadata Import(Optional - ONLY if using the AppExchange managed package) When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following: sfdx force:apex:execute -f ./data/sample-data-managed.apex To create a sample Flow that uses the sample template a sample Account layout a sample Task layout a sample report on open Action Plan-related Tasks sf deploy metadata --source-dir sfdx-source/unmanagedExtension You can also create other sample Account and Contact records by running the following command: sf data import tree --plan ./data/action-plan-data-plan.json Code formatting Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the Prettier formatter. Prettier Apex is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow these instructions from the Salesforce Extensions site. Pre-commit hook This repository also comes with a package.json file that makes it easy to set up a pre-commit hook that enforces code formatting by running Prettier every time you git commit changes. To set up the formatting pre-commit hook: Install Node.js if you haven't already done so Run npm install in your project's root folder to install the Husky and Prettier modules(Note: Mac users should verify that Xcode command line tools are installed before running this command.) Husky will now run Prettier automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. You can also run the formatting from the command line using the following command(check out package.json for the full list): npm run prettier" + }, + { + "title": "changelog", + "fileName": "changelog.html", + "text": "Changelog All notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning . Unreleased Merged Cosmetic rearrangements, apexdoc #55 4.3.0 Queues, Child Objects #53 Version 4.3.0 pt 2 #47 Version 4.3.0 #44 Codecov to v3 #41 4.2.1 - 2022-05-25 Merged Version 4.2.1 #37 Namespace to sample code #36 v4.2.0 #30 Fixed Version 4.2.1(#37) #35 #34 Namespace to sample code(#36) #35 4.2.0 - 2022-04-01 Merged Specify Action Plan Name in Invocable Apex #27 Prettier, JS fixing #26 Highlight.js to 11.5 #25 Add changelog #24 Bump minimist from 1.2.5 to 1.2.6 #23 Upgrading Instructions #22 Add Codecov #21 4.1.0 - 2022-03-17 Merged Release Ready #19 Pre-Release(beta15) #18 Pre-Commit ApexDox cleanup #16 Scripts, Cleanup, New Build #15 4.0.0-9 - 2022-02-23 Merged AP Task AssignedTo field cleanup #14 Managed vs Unmanaged Project Config #13 Permissions Updates #12 Remove tests from ApexDox #10 Security, code coverage, Print page, Spring 22! #7 Code and documentation cleanup #6 PMD-suggested cleanup #5 Rename Template Task #4 Version 4.0.0.7 #3 Code comment cleanup #2 ApexDocs, Project Files, PMD rules #1" }, { "title": "ActionPlanCreateInvocable", diff --git a/docs/changelog.html b/docs/changelog.html new file mode 100644 index 00000000..1a97c1b5 --- /dev/null +++ b/docs/changelog.html @@ -0,0 +1,468 @@ + + + + Action Plans code documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    + Show:    + +    +    +    + +
    + +

    Changelog

    +

    All notable changes to this project will be documented in this file.

    +

    + The format is based on Keep a Changelog
    and this project adheres to + Semantic Versioning. +

    +

    Unreleased

    +

    Merged

    +
      +
    • + Cosmetic rearrangements, apexdoc #55 +
    • +
    • + 4.3.0 Queues, Child Objects #53 +
    • +
    • + Version 4.3.0 pt 2 #47 +
    • +
    • + Version 4.3.0 #44 +
    • +
    • + Codecov to v3 #41 +
    • +
    +

    4.2.1 - 2022-05-25

    +

    Merged

    +
      +
    • + Version 4.2.1 #37 +
    • +
    • + Namespace to sample code #36 +
    • +
    • + v4.2.0 #30 +
    • +
    +

    Fixed

    +
      +
    • + Version 4.2.1 (#37) #35 + #34 +
    • +
    • + Namespace to sample code (#36) #35 +
    • +
    +

    4.2.0 - 2022-04-01

    +

    Merged

    +
      +
    • + Specify Action Plan Name in Invocable Apex #27 +
    • +
    • + Prettier, JS fixing #26 +
    • +
    • + Highlight.js to 11.5 #25 +
    • +
    • + Add changelog #24 +
    • +
    • + Bump minimist from 1.2.5 to 1.2.6 #23 +
    • +
    • + Upgrading Instructions #22 +
    • +
    • + Add Codecov #21 +
    • +
    +

    4.1.0 - 2022-03-17

    +

    Merged

    +
      +
    • + Release Ready #19 +
    • +
    • + Pre-Release (beta15) #18 +
    • +
    • + Pre-Commit ApexDox cleanup #16 +
    • +
    • + Scripts, Cleanup, New Build #15 +
    • +
    +

    4.0.0-9 - 2022-02-23

    +

    Merged

    +
      +
    • + AP Task AssignedTo field cleanup #14 +
    • +
    • + Managed vs Unmanaged Project Config #13 +
    • +
    • + Permissions Updates #12 +
    • +
    • + Remove tests from ApexDox #10 +
    • +
    • + Security, code coverage, Print page, Spring 22! #7 +
    • +
    • + Code and documentation cleanup #6 +
    • +
    • + PMD-suggested cleanup #5 +
    • +
    • + Rename Template Task #4 +
    • +
    • + Version 4.0.0.7 #3 +
    • +
    • + Code comment cleanup #2 +
    • +
    • + ApexDocs, Project Files, PMD rules #1 +
    • +
    +
    + + diff --git a/docs/index.html b/docs/index.html index c52cb10e..cafd550c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -341,28 +341,21 @@

    Action Plans

    codecov - Twitter + Twitter

    -

    Changelog

    +

    Changelog

    Action Plans Installation and Setup

    - Please follow installation instructions, shown on the - Installation page + Please follow installation instructions, shown on the Installation page

    -

    AppExchange

    + -

    Scratch Org

    +

    Scratch Org

    - Developer Edition / Sandbox + Developer Edition / Sandbox

    Apex Code Documentation

    About Action Plans

    @@ -536,7 +529,7 @@

    To Start Using an Object wit -

    +

    Field set on Action Plan with all related objects available and only some selected

    Test Code for Additional Objects

    Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage (not a best-practice!) just make a test method @@ -672,18 +665,20 @@

    Create Action Plans for Severa
    1. Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the "Create Account Action Plans" button.

      -

      +

      + List view of Accounts with 50 selected. The "Create Account Action Plans" button is highlighted +

    2. Select the template you want to use by typing the name on the lookup and clicking on it.
      - + Action Plan creation screen with 50 sample records indicated on the page layout

    3. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible.
      - + Filled-in Action Plan creation screen

    4. @@ -691,7 +686,7 @@

      Create Action Plans for Severa Save the Action Plan.
      Note: Action Plan creation is handled by a queueable (asynchronous) process. It can take a couple of minutes to be able to view all created records.

      -

      +

      Single Action Plan detail screen

    5. Verify the Action Plan and the tasks.

      @@ -700,9 +695,14 @@

      Create Action Plans for Severa

      Complete the first task on the Action Plan.
      Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template - is dependent and will be created only when its controlling task is complete. + is dependent and will be created only when its controlling task is complete. (A Contact related list is shown here, but this applies equally to Accounts.) +

      +

      + Contact related lists showing Action Plans for the Contact and one open and one closed task

      -

    Task notifications for Flow-created Action Plans

    @@ -730,9 +730,9 @@

    Action Plan Tasks

    Queues

    Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from - that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the createdTasks - (which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, - reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. + that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the created + Tasks (which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. + Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page.

    Automate Action Plan Creation

    Flow

    @@ -741,7 +741,7 @@

    Flow

    desired template.
    Days from trigger to start Action Plan is optional (and defaults to 0). The first task will be due the number of days (specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template.

    -

    +

    Flow action setup screen

    The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps.

    (Optional) Sample Action Plan Template for Account onboarding

    Run the following:

    @@ -830,7 +830,7 @@

    (Optional) Sample Action Pl This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this - SFDX project in the data folder. + SFDX project in the data folder.

    diff --git a/docs/installation.html b/docs/installation.html new file mode 100644 index 00000000..83e501db --- /dev/null +++ b/docs/installation.html @@ -0,0 +1,562 @@ + + + + Action Plans code documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    + Show:    + +    +    +    + +
    + +

    Action Plans Installation

    +

    Follow these instructions to deploy Action Plans to your org.

    +

    Deployment Methods

    +

    + AppExchange: The managed package is the best way to go - it will let you upgrade seamlessly as features are + added. +

    +

    Installing the App Using a Scratch Org: Fast and easy way to work with this app in a scratch org

    +

    + Installing the app using a Developer Edition Org or a Sandbox: Useful when + tackling Trailhead Badges or if you want the app deployed to a more permanent environment than a scratch org. +

    +

    Optional installation instructions: Installing sample Action Plan Template and other metadata

    +
    + + +

    + Action Plans: This is the best way to install the package, which you can + easily upgrade as features are added. +

    +

    Installing the App using a Scratch Org

    +
      +
    1. +

      + Set up your environment. Follow the steps in the + Quick Start: Lightning Web Components Trailhead project. + The steps include: +

      +
        +
      • Enable Dev Hub in your Trailhead Playground or hub org
      • +
      • Install Salesforce CLI
      • +
      • Install Visual Studio Code
      • +
      • Install the Visual Studio Code Salesforce extensions
      • +
      +
    2. +
    3. +

      If you haven't already done so, authorize your hub org and provide it with an alias (myhuborg in the command below):

      +
      sfdx auth:web:login -d -a myhuborg
      +
      +
    4. +
    5. +

      Clone this repository:

      +
      git clone https://github.com/SalesforceLabs/ActionPlansV4
      +cd ActionPlansV4
      +
      +
    6. +
    7. +

      From the terminal window, run the installation script

      +
      npm run-script scratchorg
      +
      +

      or

      +
      . scripts/scratchorg.sh
      +
      +
    8. +
    9. +

      That's it!

      +
    10. +
    +

    Installing the App using a Developer Edition Org or your own Sandbox Org

    +

    + Follow this set of instructions if you want to deploy the app to a more permanent environment than a Scratch org.
    This includes non source-tracked orgs such as a + free Developer Edition Org or a Trailhead Playground, or your own + Sandbox. +

    +

    Start from a brand-new environment to avoid conflicts with previous work you may have done.

    +
      +
    1. +

      Authorize your org and provide it with an alias (myorg in the command below):

      +
      sfdx auth:web:login -s -a myorg
      +
      +
    2. +
    3. +

      Clone this repository:

      +
      git clone https://github.com/SalesforceLabs/ActionPlansV4
      +cd ActionPlansV4
      +
      +
    4. +
    5. +

      + If you are setting up a Developer Edition: go to Setup, and under My Domain, + register a My Domain. Then ensure that enhanced domains are activated. You may + need to enable Salesforce Edge network first. +

      +
    6. +
    7. +

      + To run all the next steps at once, run this command in the terminal: +

      +
      . scripts/unmanaged.sh
      +
      +

      The org will open. That's it!

      +

      Or run these steps one by one

      +
        +
      1. +

        Run this command to deploy the app.

        +
        sf deploy metadata --source-dir sfdx-source/LabsActionPlans
        +
        +
      2. +
      3. +

        Assign the Action_Plans_Admin permission set to the admin user.

        +
        sf org assign permset --name Action_Plans_Admin
        +
        +
      4. +
      5. +

        (Optional) Load sample metadata (see below)

        +
        sf deploy metadata --source-dir sfdx-source/unmanaged
        +
        +
      6. +
      7. +

        If your org isn't already open, open it now:

        +
        sf org open --target-org myorg
        +
        +
      8. +
      +
    8. +
    9. +

      In App Launcher, select the Action Plans app.

      +
    10. +
    +

    Optional Installation Instructions

    +

    + This repository contains several files that are relevant if you want to add sample data, or integrate modern web development tooling to your Salesforce development + processes or to your continuous integration/continuous deployment processes. +

    +

    + Data/Metadata Import (Optional - NOT available if using the AppExchange managed package) +

    +
      +
    • +

      + This repository creates sample data (Accounts, Contacts, Leads) if you choose to create a scratch org. To prevent this, go to the + scratch org definition and change hasSampleData to false. +

      +
      "hasSampleData": false,
      +
      +
    • +
    • +

      To create a sample Action Plan Template for Account onboarding, run the following:

      +
      sfdx force:apex:execute -f ./data/sample-data.apex
      +
      +
    • +
    • +

      To create

      +
        +
      • a sample Flow that uses the sample template
      • +
      • a sample Account layout
      • +
      • a sample Task layout
      • +
      • a sample report on open Action Plan-related Tasks
      • +
      +
       sf deploy metadata --source-dir sfdx-source/unmanaged
      +
      +
    • +
    • +

      You can also create other sample Account and Contact records by running the following command:

      +
      sf data import tree --plan ./data/action-plan-data-plan.json
      +
      +
    • +
    +

    Data/Metadata Import (Optional - ONLY if using the AppExchange managed package)

    +
      +
    • +

      + When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the + following: +

      +
      sfdx force:apex:execute -f ./data/sample-data-managed.apex
      +
      +
    • +
    • +

      To create

      +
        +
      • a sample Flow that uses the sample template
      • +
      • a sample Account layout
      • +
      • a sample Task layout
      • +
      • a sample report on open Action Plan-related Tasks
      • +
      +
      sf deploy metadata --source-dir sfdx-source/unmanagedExtension
      +
      +
    • +
    • +

      You can also create other sample Account and Contact records by running the following command:

      +
      sf data import tree --plan ./data/action-plan-data-plan.json 
      +
      +
    • +
    +

    Code formatting

    +

    + Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, + install this extension from the Visual Studio Code Marketplace. The + .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the + Prettier formatter. +

    +

    + Prettier Apex is an extension that handles Apex-specific formatting and allows the removal of the extra + line via the Prettier config file. To use it with Visual Studio Code, follow + these instructions from the Salesforce Extensions site. +

    + + +

    Pre-commit hook

    +

    + This repository also comes with a package.json file that makes it easy to set up a pre-commit hook that enforces code formatting by running + Prettier every time you git commit changes. +

    +

    To set up the formatting pre-commit hook:

    +
      +
    1. Install Node.js if you haven't already done so
    2. +
    3. + Run npm install in your project's root folder to install the Husky and Prettier modules (Note: Mac users should verify that Xcode command line tools + are installed before running this command.) +
    4. +
    +

    + Husky will now run Prettier automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. You can also run + the formatting from the command line using the following command (check out package.json for the full list): +

    +
    npm run prettier
    +
    +
    + + From 22ea89c57e2a545cb2443e4f8f9c13aabff9adb9 Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 28 Feb 2023 18:18:05 -0800 Subject: [PATCH 30/70] docs: update CanTheUser comments --- docs/CanTheUser.html | 120 ++++++++++++------ docs/assets/search-idx.js | 2 +- .../main/default/classes/CanTheUser.cls | 34 +++-- 3 files changed, 104 insertions(+), 52 deletions(-) diff --git a/docs/CanTheUser.html b/docs/CanTheUser.html index b9e7e5b1..c348718b 100644 --- a/docs/CanTheUser.html +++ b/docs/CanTheUser.html @@ -341,9 +341,9 @@

    A reusable, intuitive library for determining wether or not the current use can create, read, edit, or delete objects as well as determining if the user has access - or update permissions on specific fields. This class name was chosen to facilitate easy-to-understand and read code. Whenever you need to check FLS or CRUD access - your code reads like this if(CanTheUser.read(new account())){} making the calling and use of this code easy and intuitive. Taken - from Codefriar code. + or update permissions on specific fields.
    This class name was chosen to facilitate easy-to-understand and read code. Whenever you need to check FLS or CRUD + access your code reads like this if(CanTheUser.read(new account())){} making the calling and use of this code easy and intuitive. + Taken from Codefriar code.
    Signature
    @@ -398,7 +398,7 @@

    CanTheUser Properties

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L41"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L47"> memoizedFLSResults @@ -441,6 +441,7 @@

    Enums

    Name Signature Values + Description @@ -449,7 +450,7 @@

    Enums

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L22"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L25"> CrudType @@ -457,6 +458,8 @@

    Enums

    public enum CrudType
    CREATEABLE, READABLE, EDITABLE, DELETABLE, UPSERTABLE + + The major database actions are insert, read, update, delete, and upsert. Undelete is not considered here. @@ -465,7 +468,7 @@

    Enums

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L30"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L36"> FLSType @@ -473,6 +476,8 @@

    Enums

    public enum FLSType
    ACCESSIBLE, UPDATABLE + + If a field is not accessible (invisible) it cannot be updatable. If it is accessible, it may or may not be updatable.
    @@ -513,16 +518,17 @@

    CanTheUser Methods

  • crud (obj, permission) -
    - This class' name was chosen to facilitate easy-to-understand and read code. Whenever you need to check FLS or CRUD access your code reads like this - if(CanTheUser.read(new account())){} making the calling and use of this code easy and intuitive. -
    +
    Main crud method checks an object for a specific permission
  • crud (objs, permission) + +
    MaSecondaryin crud method checks a "list" of SObjects for a specific permission
  • crud (objectName, permission) + +
    MaSecondaryin crud method checks a "list" of SObjects for a specific permission
  • destroy (obj) @@ -607,7 +613,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L293"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L307"> bulkFLSAccessible(obj, fields)

    @@ -635,7 +641,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L324"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L338"> bulkFLSUpdatable(obj, fields)

    @@ -663,7 +669,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L353"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L367"> calculateFLS(objType)

    @@ -687,7 +693,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L104"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L118"> create(obj)

    @@ -713,7 +719,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L115"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L129"> create(objs)

    @@ -737,7 +743,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L127"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L141"> create(objName)

    @@ -762,17 +768,25 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L60"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L58"> crud(obj, permission)

    -
    - This class' name was chosen to facilitate easy-to-understand and read code. Whenever you need to check FLS or CRUD access your code reads like this - if(CanTheUser.read(new account())){} making the calling and use of this code easy and intuitive. -
    +
    Main crud method checks an object for a specific permission
    Signature
    -
    @testVisible
    +
    private static Boolean crud(SObject obj, CrudType permission)
    +
    Parameters
    +
    obj
    +
    Type: SObject
    +
    the object type to check
    +
    permission
    +
    Type: CrudType
    +
    create, read, update or delete
    +
    Returns
    +
    Boolean Is the action possible?
    +
    Example
    +
     System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE));

    @@ -781,13 +795,25 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L85"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L91"> crud(objs, permission)

    +
    MaSecondaryin crud method checks a "list" of SObjects for a specific permission
    Signature
    -
    @testVisible
    +
    private static Boolean crud(List<SObject> objs, CrudType permission)
    +
    Parameters
    +
    objs
    +
    Type: List<SObject>
    +
    a list of SObjects, but we only check the first one
    +
    permission
    +
    Type: CrudType
    +
    create, read, update or delete
    +
    Returns
    +
    Boolean Is the action possible?
    +
    Example
    +
     System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE));

    @@ -796,13 +822,25 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L90"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L104"> crud(objectName, permission)

    +
    MaSecondaryin crud method checks a "list" of SObjects for a specific permission
    Signature
    -
    @testVisible
    +
    private static Boolean crud(String objectName, CrudType permission)
    +
    Parameters
    +
    objectName
    +
    Type: String
    +
    the object name; we will find the type from this
    +
    permission
    +
    Type: CrudType
    +
    create, read, update or delete
    +
    Returns
    +
    Boolean Is the action possible?
    +
    Example
    +
     System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE));

    @@ -811,7 +849,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L244"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L258"> destroy(obj)

    @@ -837,7 +875,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L254"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L268"> destroy(objs)

    @@ -860,7 +898,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L266"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L280"> destroy(objName)

    @@ -885,7 +923,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L175"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L189"> edit(obj)

    @@ -911,7 +949,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L185"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L199"> edit(objs)

    @@ -934,7 +972,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L197"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L211"> edit(objName)

    @@ -959,7 +997,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L280"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L294"> flsAccessible(obj, field)

    @@ -992,7 +1030,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L311"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L325"> flsUpdatable(obj, field)

    @@ -1025,7 +1063,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L340"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L354"> getFLSForFieldOnObject(obj, field, checkType)

    @@ -1055,7 +1093,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L139"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L153"> read(obj)

    @@ -1081,7 +1119,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L151"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L165"> read(objs)

    @@ -1106,7 +1144,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L163"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L177"> read(objName)

    @@ -1131,7 +1169,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L209"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L223"> ups(obj)

    @@ -1157,7 +1195,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L220"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L234"> ups(objs)

    @@ -1180,7 +1218,7 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L232"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls#L246"> ups(objName)

    diff --git a/docs/assets/search-idx.js b/docs/assets/search-idx.js index 78157537..7a8b2305 100644 --- a/docs/assets/search-idx.js +++ b/docs/assets/search-idx.js @@ -112,7 +112,7 @@ export default [ { "title": "CanTheUser", "fileName": "CanTheUser.html", - "text": "CanTheUser A reusable, intuitive library for determining wether or not the current use can create, read, edit, or delete objects as well as determining if the user has access or update permissions on specific fields. This class name was chosen to facilitate easy-to-understand and read code. Whenever you need to check FLS or CRUD access your code reads like this if(CanTheUser.read(new account())){} making the calling and use of this code easy and intuitive. Taken from Codefriar code. Signature public inherited sharing class CanTheUser See https://github.com/codefriar/CanTheUser , https://github.com/trailheadapps/apex-recipes Author Codefriar Since 2021 CanTheUser Properties Name Signature Annotations Description accessibleFieldsByObject private static Map> accessibleFieldsByObject @testVisible memoizedFLSResults private static Map> memoizedFLSResults This variable stores, within the same transaction, all previously calculated FLS results for an object. This prevents multiple calls to this library within the same transaction from executing more than a single describe call. updatableFieldsByObject private static Map> updatableFieldsByObject @testVisible Enums Name Signature Values CrudType public enum CrudType CREATEABLE, READABLE, EDITABLE, DELETABLE, UPSERTABLE FLSType public enum FLSType ACCESSIBLE, UPDATABLE CanTheUser Methods bulkFLSAccessible(obj, fields) bulk form of flsAccessible bulkFLSUpdatable(obj, fields) bulk form of flsUpdatable call calculateFLS(objType) Calculates the FLS for a given object type create(obj) Convenience API for determining if the running user can create the specified object create(objs) Convenience API for determining if the running user can create the specified object create(objName) Convenience API for determining if the running user can create the specified object crud(obj, permission) This class' name was chosen to facilitate easy-to-understand and read code. Whenever you need to check FLS or CRUD access your code reads like this if(CanTheUser.read(new account())){} making the calling and use of this code easy and intuitive. crud(objs, permission) crud(objectName, permission) destroy(obj) Convenience API for determining if the running user can delete/destroy the specified object destroy(objs) Convenience API for determining if the running user can delete/destroy the specified object destroy(objName) Convenience API for determining if the running user can delete the specified object edit(obj) Convenience API for determining if the running user can edit/update the specified object edit(objs) Convenience API for determining if the running user can edit/update the specified objects edit(objName) Convenience API for determining if the running user can edit/update the specified object flsAccessible(obj, field) public static method to determine if a given field on a given object is Accessible(readable) flsUpdatable(obj, field) public static method to determine if a given field on a given object is Updatable. getFLSForFieldOnObject(obj, field, checkType) Abstracted method for retrieving or calculating(memoization) of the FLS for a given field on a given object. read(obj) Convenience API for determining if the running user can read / access the specified object read(objs) Convenience API for determining if the running user can read/access the specified objects read(objName) Convenience API for determining if the running user can read/access the specified object ups(obj) Convenience API for determining if the running user can upsert(insert and update) the specified objects ups(objs) Convenience API for determining if the running user can edit/update the specified objects ups(objName) Convenience API for determining if the running user can upsert the specified object bulkFLSAccessible(obj, fields) bulk form of flsAccessible Signature public static Map bulkFLSAccessible(String obj, Set fields) Parameters obj Type: String Obj name on which to check fields Type: Set Set of Fields to check for accessibility. Returns Map (FieldName, true/false) Example String[] fields = new String[]{'Name', 'ShippingStreet'}; System.debug(CanTheUser.bulkFLSAccessible('Account', fields)); bulkFLSUpdatable(obj, fields) bulk form of flsUpdatable call Signature public static Map bulkFLSUpdatable(String obj, Set fields) Parameters obj Type: String Name of the object fields Type: Set Set of Field names to check Returns Map (FieldName, true/false) Example String[] fields = new String[]{'Name', 'ShippingStreet'}; System.debug(CanTheUser.bulkFLSUpdatable('Account', fields)); calculateFLS(objType) Calculates the FLS for a given object type Signature private static Map> calculateFLS(String objType) Parameters objType Type: String String name of the object type Returns Map> create(obj) Convenience API for determining if the running user can create the specified object Signature public static Boolean create(SObject obj) Parameters obj Type: SObject Object type to check create permissions on Returns Boolean Example System.debug(CanTheUser.create(new Account())); create(objs) Convenience API for determining if the running user can create the specified object Signature public static Boolean create(List objs) Parameters objs Type: List list of objects. Only the first will be checked.(logically, a list is of uniform type and, and if the user can create one) Returns Boolean create(objName) Convenience API for determining if the running user can create the specified object Signature public static Boolean create(String objName) Parameters String Object type to check create permissions on Returns Boolean Example System.debug(CanTheUser.create('Account')); crud(obj, permission) This class' name was chosen to facilitate easy-to-understand and read code. Whenever you need to check FLS or CRUD access your code reads like this if(CanTheUser.read(new account())){} making the calling and use of this code easy and intuitive. Signature @testVisible private static Boolean crud(SObject obj, CrudType permission) crud(objs, permission) Signature @testVisible private static Boolean crud(List objs, CrudType permission) crud(objectName, permission) Signature @testVisible private static Boolean crud(String objectName, CrudType permission) destroy(obj) Convenience API for determining if the running user can delete/destroy the specified object Signature public static Boolean destroy(SObject obj) Parameters obj Type: SObject object type to check destroy permissions on Returns Boolean Example System.debug(CanTheUser.destroy(new Account())); destroy(objs) Convenience API for determining if the running user can delete/destroy the specified object Signature public static Boolean destroy(List objs) Parameters String Object type to check delete permissions on Returns Boolean destroy(objName) Convenience API for determining if the running user can delete the specified object Signature public static Boolean destroy(String objName) Parameters String Object type to check create permissions on Returns Boolean Example System.debug(CanTheUser.destroy('Account')); edit(obj) Convenience API for determining if the running user can edit/update the specified object Signature public static Boolean edit(SObject obj) Parameters obj Type: SObject object type to check edit permissions on Returns Boolean Example System.debug(CanTheUser.edit(new Account())); edit(objs) Convenience API for determining if the running user can edit/update the specified objects Signature public static Boolean edit(List objs) Parameters obj object type to check edit permissions on Returns Boolean edit(objName) Convenience API for determining if the running user can edit/update the specified object Signature public static Boolean edit(String objName) Parameters String Object type to check edit permissions on Returns Boolean Example System.debug(CanTheUser.edit('Account')); flsAccessible(obj, field) public static method to determine if a given field on a given object is Accessible(readable) Signature public static Boolean flsAccessible(String obj, String field) Parameters obj Type: String the object in question, in String form(object name) field Type: String the field in question in String form(field name) Returns Boolean See CanTheUser.getFLSForFieldOnObject Example System.debug(CanTheUser.flsAccessible('Account', 'Name')); flsUpdatable(obj, field) public static method to determine if a given field on a given object is Updatable. Signature public static Boolean flsUpdatable(String obj, String field) Parameters obj Type: String the string version of an object name field Type: String the field to check Returns Boolean See CanTheUser.getFLSForFieldOnObject Example System.debug(CanTheUser.flsUpdatable('Account', 'Name')); getFLSForFieldOnObject(obj, field, checkType) Abstracted method for retrieving or calculating(memoization) of the FLS for a given field on a given object. Signature private static Boolean getFLSForFieldOnObject(String obj, String field, FLSType checkType) Parameters obj Type: String String version of object name to check field Type: String String version of the field to check checkType Type: FLSType Enum of Accessible or Updatable. Returns Boolean read(obj) Convenience API for determining if the running user can read / access the specified object Signature public static Boolean read(SObject obj) Parameters obj Type: SObject object type to check read permissions on Returns Boolean Example System.debug(CanTheUser.read(new Account())); read(objs) Convenience API for determining if the running user can read/access the specified objects Signature public static Boolean read(List objs) Parameters obj object type to check read permissions on Returns Boolean Example CanTheUser.read(new List{a1, a2})); read(objName) Convenience API for determining if the running user can read/access the specified object Signature public static Boolean read(String objName) Parameters String Object type to check read permissions on Returns Boolean Example System.debug(CanTheUser.read('Account')); ups(obj) Convenience API for determining if the running user can upsert(insert and update) the specified objects Signature public static Boolean ups(SObject obj) Parameters obj Type: SObject object type to check edit permissions on Returns Boolean Example System.debug(CanTheUser.ups(new Account())); ups(objs) Convenience API for determining if the running user can edit/update the specified objects Signature public static Boolean ups(List objs) Parameters obj object type to check upsert permissions on Returns Boolean ups(objName) Convenience API for determining if the running user can upsert the specified object Signature public static Boolean ups(String objName) Parameters String Object type to check upsert permissions on Returns Boolean Example System.debug(CanTheUser.ups('Account'));" + "text": "CanTheUser A reusable, intuitive library for determining wether or not the current use can create, read, edit, or delete objects as well as determining if the user has access or update permissions on specific fields. This class name was chosen to facilitate easy-to-understand and read code. Whenever you need to check FLS or CRUD access your code reads like this if(CanTheUser.read(new account())){} making the calling and use of this code easy and intuitive. Taken from Codefriar code. Signature public inherited sharing class CanTheUser See https://github.com/codefriar/CanTheUser , https://github.com/trailheadapps/apex-recipes Author Codefriar Since 2021 CanTheUser Properties Name Signature Annotations Description accessibleFieldsByObject private static Map> accessibleFieldsByObject @testVisible memoizedFLSResults private static Map> memoizedFLSResults This variable stores, within the same transaction, all previously calculated FLS results for an object. This prevents multiple calls to this library within the same transaction from executing more than a single describe call. updatableFieldsByObject private static Map> updatableFieldsByObject @testVisible Enums Name Signature Values Description CrudType public enum CrudType CREATEABLE, READABLE, EDITABLE, DELETABLE, UPSERTABLE The major database actions are insert, read, update, delete, and upsert. Undelete is not considered here. FLSType public enum FLSType ACCESSIBLE, UPDATABLE If a field is not accessible(invisible) it cannot be updatable. If it is accessible, it may or may not be updatable. CanTheUser Methods bulkFLSAccessible(obj, fields) bulk form of flsAccessible bulkFLSUpdatable(obj, fields) bulk form of flsUpdatable call calculateFLS(objType) Calculates the FLS for a given object type create(obj) Convenience API for determining if the running user can create the specified object create(objs) Convenience API for determining if the running user can create the specified object create(objName) Convenience API for determining if the running user can create the specified object crud(obj, permission) Main crud method checks an object for a specific permission crud(objs, permission) MaSecondaryin crud method checks a \"list\" of SObjects for a specific permission crud(objectName, permission) MaSecondaryin crud method checks a \"list\" of SObjects for a specific permission destroy(obj) Convenience API for determining if the running user can delete/destroy the specified object destroy(objs) Convenience API for determining if the running user can delete/destroy the specified object destroy(objName) Convenience API for determining if the running user can delete the specified object edit(obj) Convenience API for determining if the running user can edit/update the specified object edit(objs) Convenience API for determining if the running user can edit/update the specified objects edit(objName) Convenience API for determining if the running user can edit/update the specified object flsAccessible(obj, field) public static method to determine if a given field on a given object is Accessible(readable) flsUpdatable(obj, field) public static method to determine if a given field on a given object is Updatable. getFLSForFieldOnObject(obj, field, checkType) Abstracted method for retrieving or calculating(memoization) of the FLS for a given field on a given object. read(obj) Convenience API for determining if the running user can read / access the specified object read(objs) Convenience API for determining if the running user can read/access the specified objects read(objName) Convenience API for determining if the running user can read/access the specified object ups(obj) Convenience API for determining if the running user can upsert(insert and update) the specified objects ups(objs) Convenience API for determining if the running user can edit/update the specified objects ups(objName) Convenience API for determining if the running user can upsert the specified object bulkFLSAccessible(obj, fields) bulk form of flsAccessible Signature public static Map bulkFLSAccessible(String obj, Set fields) Parameters obj Type: String Obj name on which to check fields Type: Set Set of Fields to check for accessibility. Returns Map (FieldName, true/false) Example String[] fields = new String[]{'Name', 'ShippingStreet'}; System.debug(CanTheUser.bulkFLSAccessible('Account', fields)); bulkFLSUpdatable(obj, fields) bulk form of flsUpdatable call Signature public static Map bulkFLSUpdatable(String obj, Set fields) Parameters obj Type: String Name of the object fields Type: Set Set of Field names to check Returns Map (FieldName, true/false) Example String[] fields = new String[]{'Name', 'ShippingStreet'}; System.debug(CanTheUser.bulkFLSUpdatable('Account', fields)); calculateFLS(objType) Calculates the FLS for a given object type Signature private static Map> calculateFLS(String objType) Parameters objType Type: String String name of the object type Returns Map> create(obj) Convenience API for determining if the running user can create the specified object Signature public static Boolean create(SObject obj) Parameters obj Type: SObject Object type to check create permissions on Returns Boolean Example System.debug(CanTheUser.create(new Account())); create(objs) Convenience API for determining if the running user can create the specified object Signature public static Boolean create(List objs) Parameters objs Type: List list of objects. Only the first will be checked.(logically, a list is of uniform type and, and if the user can create one) Returns Boolean create(objName) Convenience API for determining if the running user can create the specified object Signature public static Boolean create(String objName) Parameters String Object type to check create permissions on Returns Boolean Example System.debug(CanTheUser.create('Account')); crud(obj, permission) Main crud method checks an object for a specific permission Signature private static Boolean crud(SObject obj, CrudType permission) Parameters obj Type: SObject the object type to check permission Type: CrudType create, read, update or delete Returns Boolean Is the action possible? Example System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE)); crud(objs, permission) MaSecondaryin crud method checks a \"list\" of SObjects for a specific permission Signature private static Boolean crud(List objs, CrudType permission) Parameters objs Type: List a list of SObjects, but we only check the first one permission Type: CrudType create, read, update or delete Returns Boolean Is the action possible? Example System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE)); crud(objectName, permission) MaSecondaryin crud method checks a \"list\" of SObjects for a specific permission Signature private static Boolean crud(String objectName, CrudType permission) Parameters objectName Type: String the object name; we will find the type from this permission Type: CrudType create, read, update or delete Returns Boolean Is the action possible? Example System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE)); destroy(obj) Convenience API for determining if the running user can delete/destroy the specified object Signature public static Boolean destroy(SObject obj) Parameters obj Type: SObject object type to check destroy permissions on Returns Boolean Example System.debug(CanTheUser.destroy(new Account())); destroy(objs) Convenience API for determining if the running user can delete/destroy the specified object Signature public static Boolean destroy(List objs) Parameters String Object type to check delete permissions on Returns Boolean destroy(objName) Convenience API for determining if the running user can delete the specified object Signature public static Boolean destroy(String objName) Parameters String Object type to check create permissions on Returns Boolean Example System.debug(CanTheUser.destroy('Account')); edit(obj) Convenience API for determining if the running user can edit/update the specified object Signature public static Boolean edit(SObject obj) Parameters obj Type: SObject object type to check edit permissions on Returns Boolean Example System.debug(CanTheUser.edit(new Account())); edit(objs) Convenience API for determining if the running user can edit/update the specified objects Signature public static Boolean edit(List objs) Parameters obj object type to check edit permissions on Returns Boolean edit(objName) Convenience API for determining if the running user can edit/update the specified object Signature public static Boolean edit(String objName) Parameters String Object type to check edit permissions on Returns Boolean Example System.debug(CanTheUser.edit('Account')); flsAccessible(obj, field) public static method to determine if a given field on a given object is Accessible(readable) Signature public static Boolean flsAccessible(String obj, String field) Parameters obj Type: String the object in question, in String form(object name) field Type: String the field in question in String form(field name) Returns Boolean See CanTheUser.getFLSForFieldOnObject Example System.debug(CanTheUser.flsAccessible('Account', 'Name')); flsUpdatable(obj, field) public static method to determine if a given field on a given object is Updatable. Signature public static Boolean flsUpdatable(String obj, String field) Parameters obj Type: String the string version of an object name field Type: String the field to check Returns Boolean See CanTheUser.getFLSForFieldOnObject Example System.debug(CanTheUser.flsUpdatable('Account', 'Name')); getFLSForFieldOnObject(obj, field, checkType) Abstracted method for retrieving or calculating(memoization) of the FLS for a given field on a given object. Signature private static Boolean getFLSForFieldOnObject(String obj, String field, FLSType checkType) Parameters obj Type: String String version of object name to check field Type: String String version of the field to check checkType Type: FLSType Enum of Accessible or Updatable. Returns Boolean read(obj) Convenience API for determining if the running user can read / access the specified object Signature public static Boolean read(SObject obj) Parameters obj Type: SObject object type to check read permissions on Returns Boolean Example System.debug(CanTheUser.read(new Account())); read(objs) Convenience API for determining if the running user can read/access the specified objects Signature public static Boolean read(List objs) Parameters obj object type to check read permissions on Returns Boolean Example CanTheUser.read(new List{a1, a2})); read(objName) Convenience API for determining if the running user can read/access the specified object Signature public static Boolean read(String objName) Parameters String Object type to check read permissions on Returns Boolean Example System.debug(CanTheUser.read('Account')); ups(obj) Convenience API for determining if the running user can upsert(insert and update) the specified objects Signature public static Boolean ups(SObject obj) Parameters obj Type: SObject object type to check edit permissions on Returns Boolean Example System.debug(CanTheUser.ups(new Account())); ups(objs) Convenience API for determining if the running user can edit/update the specified objects Signature public static Boolean ups(List objs) Parameters obj object type to check upsert permissions on Returns Boolean ups(objName) Convenience API for determining if the running user can upsert the specified object Signature public static Boolean ups(String objName) Parameters String Object type to check upsert permissions on Returns Boolean Example System.debug(CanTheUser.ups('Account'));" }, { "title": "ActionPlanCreateInvocableTest", diff --git a/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls b/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls index 4bb25103..40b788d9 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/CanTheUser.cls @@ -3,7 +3,7 @@ * A reusable, intuitive library for determining wether or not the * current use can create, read, edit, or delete objects as well as * determining if the user has access or update permissions on specific fields. - * This class name was chosen to facilitate easy-to-understand and read code. + *
    This class name was chosen to facilitate easy-to-understand and read code. * Whenever you need to check FLS or CRUD access your code reads like this * `if(CanTheUser.read(new account())){}` making the calling and use of this * code easy and intuitive. Taken from Codefriar code. @@ -19,6 +19,9 @@ public inherited sharing class CanTheUser { @testVisible private static Map> updatableFieldsByObject = new Map>(); + /** + * The major database actions are insert, read, update, delete, and upsert. Undelete is not considered here. + */ public enum CrudType { CREATEABLE, READABLE, @@ -27,6 +30,9 @@ public inherited sharing class CanTheUser { UPSERTABLE } + /** + * If a field is not accessible (invisible) it cannot be updatable. If it is accessible, it may or may not be updatable. + */ public enum FLSType { ACCESSIBLE, UPDATABLE @@ -40,14 +46,7 @@ public inherited sharing class CanTheUser { */ private static Map> memoizedFLSResults = new Map>(); - /** - * This class' name was chosen to facilitate easy-to-understand and read - * code. Whenever you need to check FLS or CRUD access your code reads like - * this - * `if(CanTheUser.read(new account())){}` making the calling and use of this - * code easy and intuitive. - */ - + @testVisible /** * @description Main crud method checks an object for a specific permission * @param obj the object type to check @@ -56,7 +55,6 @@ public inherited sharing class CanTheUser { * @example * System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE)); **/ - @testVisible private static Boolean crud(SObject obj, CrudType permission) { switch on permission { when CREATEABLE { @@ -82,11 +80,27 @@ public inherited sharing class CanTheUser { } @testVisible + /** + * @description MaSecondaryin crud method checks a "list" of SObjects for a specific permission + * @param objs a list of SObjects, but we only check the first one + * @param permission create, read, update or delete + * @return `Boolean` Is the action possible? + * @example + * System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE)); + **/ private static Boolean crud(List objs, CrudType permission) { return crud(objs?.get(0), permission); } @testVisible + /** + * @description MaSecondaryin crud method checks a "list" of SObjects for a specific permission + * @param objectName the object name; we will find the type from this + * @param permission create, read, update or delete + * @return `Boolean` Is the action possible? + * @example + * System.debug(CanTheUser.crud(new Account(), CanTheUser.CrudType.READABLE)); + **/ private static Boolean crud(String objectName, CrudType permission) { Type t = Type.forName(objectName); SObject p = (SObject) JSON.deserialize('{}', t); From d34eaaf3d3c6958bb5115215259b81a491dfe266 Mon Sep 17 00:00:00 2001 From: David Schach Date: Thu, 2 Mar 2023 13:32:55 -0800 Subject: [PATCH 31/70] APTemplate lookup actions --- README.md | 7 +-- .../classes/ActionPlanCreationController.cls | 48 ++++++++++++++----- .../default/pages/ActionPlanCreation.page | 9 +++- .../js/ActionPlans_Scripts.js | 16 ++++++- 4 files changed, 60 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 5123e015..cc0484c8 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ Note: The Apex used in Flows or via triggers does not require special permission # Using Action Plans with Custom Objects -## To Start Using an Object with Action Plans +## Start Using an Object with Action Plans 1. Create the object and be sure to check "Track Activities" for the object attrributes 1. Create a lookup field from Action Plan to the object. **Name the field the same as the object name.** The field label can be anything. @@ -151,7 +151,7 @@ Note: The Apex used in Flows or via triggers does not require special permission Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage (not a best-practice!) just make a test method inserting and then deleting a record. Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet. -## Adding a New Custom Object Action Plan button to the Action Plan object +## Adding a `Create Custom Object Action Plan` button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template. (Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: @@ -162,7 +162,8 @@ While Action Plans already overrides the New Action Plan action, the New button ```plaintext {!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType="CustomObject__c", refId=CustomObject__c.Id] )} ``` -## Create Action Plans for multiple Custom Object records +1. Be sure to remove the standard New button on the Action Plans related list and use this button instead. +## `Create Action Plans` for multiple Custom Object records Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: ```xml diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls index f14ccdee..cd94df94 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls @@ -34,8 +34,9 @@ public with sharing class ActionPlanCreationController { private ActionPlan__c actionPlan; /** * TemplateId is pulled from the page parameters and tells us if we're making an Action Plan based on a template + *
    It can also be set by choosing a template when applying a template to one or more records */ - private Id templateId; + public Id templateId { get; set; } /** * Related Record IDs */ @@ -155,7 +156,7 @@ public with sharing class ActionPlanCreationController { this.hasRelatedObject = this.hasRelatedObject(); this.taskIndex = this.calculateMaxTaskIndex(); this.subtitle = this.actionPlan.Name; - this.taskOwnerMap = queryAPTaskOwners(this.actionPlan); + this.taskOwnerMap = this.queryAPTaskOwners(this.actionPlan); } /** @@ -208,31 +209,42 @@ public with sharing class ActionPlanCreationController { * @param apt `ActionPlanTemplate__c` record */ private void initNewActionPlanFromTemplate(Boolean visualforceContext, ActionPlanTemplate__c apt) { + System.debug('in initNewActionPlanFromTemplate'); this.initNewActionPlan(); - ActionPlanTemplate__c actionPlanTemplate; + ActionPlanTemplate__c apTemplate; if (apt == null) { List listAPT = [ - SELECT Id, Name, Description__c, LastModifiedDate, SkipWeekends__c, SkipDay__c, TaskRecordTypeID__c + SELECT Id, Name, Description__c, LastModifiedDate, SkipWeekends__c, SkipDay__c, TaskRecordTypeID__c, Archived__c FROM ActionPlanTemplate__c WHERE Id = :this.templateId ]; if (!listAPT.isEmpty()) { - actionPlanTemplate = listAPT.get(0); + apTemplate = listAPT.get(0); } } else { - actionPlanTemplate = apt; + apTemplate = apt; } - this.actionPlan.Name = ActionPlansUtilities.actionPlanSubjectToName(actionPlanTemplate.Name); - this.actionPlan.Description__c = actionPlanTemplate.Description__c; - this.actionPlan.SkipWeekends__c = actionPlanTemplate.SkipWeekends__c; - this.actionPlan.SkipDay__c = actionPlanTemplate.SkipDay__c == null ? '' : actionPlanTemplate.SkipDay__c; - this.actionPlan.Action_Plan_Template__c = actionPlanTemplate.Id; - this.actionPlan.TaskRecordTypeID__c = actionPlanTemplate.TaskRecordTypeID__c; + this.actionPlan.Name = ActionPlansUtilities.actionPlanSubjectToName(apTemplate.Name); + this.actionPlan.Description__c = apTemplate.Description__c; + this.actionPlan.SkipWeekends__c = apTemplate.SkipWeekends__c; + this.actionPlan.SkipDay__c = apTemplate.SkipDay__c == null ? '' : apTemplate.SkipDay__c; + this.actionPlan.Action_Plan_Template__c = apTemplate.Id; + this.actionPlan.TaskRecordTypeID__c = apTemplate.TaskRecordTypeID__c; + + if (refId != null) { + this.hasRelated = true; + this.referedObjectInit(); + if (!refId.containsIgnoreCase(',') && refType != null) { + String displayFieldName = chooseDisplayField(refType); + String queryText = 'SELECT Id, ' + displayFieldName + ' FROM ' + refType + ' WHERE Id = "' + refId + '"'; + SObject qResult = Database.query(queryText)[0]; + this.actionPlan.Name += ' - ' + (String) qResult.get(displayFieldName); + } + } if (visualforceContext) { this.taskIndex = this.calculateMaxTemplateTaskIndex(); - this.subtitle = System.Label.ap_New + ' ' + Schema.getGlobalDescribe().get(getNamespacePrefix() + 'ActionPlan__c').getDescribe().getLabel(); } this.apTasks = this.getAPTasks(); } @@ -523,6 +535,16 @@ public with sharing class ActionPlanCreationController { return pageRef; } + public Pagereference onTemplateSelection() { + PageReference pr = Page.ActionPlanCreation; + pr.getParameters().put('refType', this.refType); + pr.getParameters().put('refId', this.refId); + pr.getParameters().put('templateId', this.actionPlan.Action_Plan_Template__c); + + pr.setRedirect(true); + return pr; + } + /** * Saves Action Plan Instance and task. Also creates all due dates for tasks, then redirects to the AP list * @return `Id` Action Plan Id diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page index b6636ccd..3c1c810c 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page @@ -104,8 +104,13 @@ For full license text, see the LICENSE file in the repo root or https://opensour - + + + + + + @@ -131,7 +136,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour var fieldId = templateLKP_path + '_lkid'; if (document.getElementById(fieldId) != null && document.getElementById(fieldId).type == 'hidden') { var selectedTmplId = document.getElementById(fieldId).value; - reloadActionPlan('{!JSENCODE($CurrentPage.Parameters.TemplateId)}', selectedTmplId); + reloadActionPlan('{!JSENCODE($CurrentPage.Parameters.templateId)}', selectedTmplId); } else { if (document.getElementById(fieldId).type == 'select-one') { document.getElementById(fieldId).selectedIndex = 0; diff --git a/sfdx-source/LabsActionPlans/main/default/staticresources/ActionPlan_Resources/js/ActionPlans_Scripts.js b/sfdx-source/LabsActionPlans/main/default/staticresources/ActionPlan_Resources/js/ActionPlans_Scripts.js index 5ea45749..6f976772 100644 --- a/sfdx-source/LabsActionPlans/main/default/staticresources/ActionPlan_Resources/js/ActionPlans_Scripts.js +++ b/sfdx-source/LabsActionPlans/main/default/staticresources/ActionPlan_Resources/js/ActionPlans_Scripts.js @@ -190,11 +190,18 @@ function checkReminderPicklists() { }); } +function reloadActionPlanForRefIds(templateId, selectedTemplateId) {} + function reloadActionPlan(templateId, selectedTemplateId) { var new_location = window.location.href; + new_location = '/apex/ActionPlanCreation?'; var reload = 0; var refObjType = j$('.hidden_refOBjtype').val(); + console.log('refObjType: ' + refObjType); var objIds = j$('.hidden_refID').val(); + console.log('objIds: ' + objIds); + console.log('templateId: ' + templateId); + console.log('selectedTemplateId: ' + selectedTemplateId); // There is a template selected and different from previous one if (selectedTemplateId != '000000000000000' && templateId.match(selectedTemplateId) == null) { @@ -242,7 +249,7 @@ function reloadActionPlan(templateId, selectedTemplateId) { } reload = 1; } - + console.log('new_location: ' + new_location); if (reload) { if (refObjType.length > 0 && refObjType != '') { new_location = new_location + '&refType=' + refObjType; @@ -251,8 +258,13 @@ function reloadActionPlan(templateId, selectedTemplateId) { if (objIds.length > 0 && objIds != '') { new_location = new_location + '&refId=' + objIds; } - } + // add template id + if (selectedTemplateId.length > 0 && selectedTemplateId != '') { + new_location = new_location + '&templateId=' + selectedTemplateId; + } + } + console.log('reload new_location: ' + new_location); if (UITheme.getUITheme() === 'Theme4d' || UITheme.getUITheme() === 'Theme4u') { sforce.one.navigateToURL(new_location); } else { From 0a6a3ca1f167382feddf6318d1fe53a6b4106623 Mon Sep 17 00:00:00 2001 From: David Schach Date: Thu, 2 Mar 2023 13:43:13 -0800 Subject: [PATCH 32/70] build(sfdx): optimize forceignore --- .forceignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.forceignore b/.forceignore index 8b5ee128..185bb0dc 100755 --- a/.forceignore +++ b/.forceignore @@ -47,6 +47,7 @@ TaskPriority.standardValueSet TaskType.standardValueSet Lead-Lead Layout.layout Account-Account Layout.layout +Opportunity-Opportunity Layout.layout-meta.xml Global-Global Layout.layout Account.object Campaign.object From 8bf011b5eb9e965f0f6016233b81a1aa239edc25 Mon Sep 17 00:00:00 2001 From: David Schach Date: Fri, 3 Mar 2023 17:57:18 -0800 Subject: [PATCH 33/70] fix: redirect on template choice for records --- .../classes/ActionPlanCreationController.cls | 13 ++--- .../default/classes/ActionPlansUtilities.cls | 6 ++- .../default/pages/ActionPlanCreation.page | 12 ++--- .../pages/ActionPlanTemplateCreation.page | 4 -- .../js/ActionPlans_Scripts.js | 53 +++++++++++++++---- .../js/jquery-3.6.0.min.js | 4 +- .../ActionPlan_Resources/js/jquery-ui.min.js | 13 ++--- 7 files changed, 63 insertions(+), 42 deletions(-) diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls index cd94df94..ab458ab5 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls @@ -237,7 +237,7 @@ public with sharing class ActionPlanCreationController { this.referedObjectInit(); if (!refId.containsIgnoreCase(',') && refType != null) { String displayFieldName = chooseDisplayField(refType); - String queryText = 'SELECT Id, ' + displayFieldName + ' FROM ' + refType + ' WHERE Id = "' + refId + '"'; + String queryText = 'SELECT Id, ' + displayFieldName + ' FROM ' + refType + ' WHERE Id = :refId'; SObject qResult = Database.query(queryText)[0]; this.actionPlan.Name += ' - ' + (String) qResult.get(displayFieldName); } @@ -378,7 +378,7 @@ public with sharing class ActionPlanCreationController { } Schema.DescribeFieldResult dfr = Schema.sObjectType.ActionPlan__c.fields.getMap().get(relatedFieldName).getDescribe(); Schema.SObjectType sot = dfr.getReferenceTo()[0]; - Schema.DescribeSObjectResult dsr = sot.getDescribe(); + Schema.DescribeSObjectResult dsr = sot.getDescribe(SObjectDescribeOptions.DEFERRED); this.relatedObjectName = dsr.getName(); System.debug('relatedObjectName: ' + this.relatedObjectName); this.relatedObjDisplayField = chooseDisplayField(this.relatedObjectName); @@ -535,7 +535,8 @@ public with sharing class ActionPlanCreationController { return pageRef; } - public Pagereference onTemplateSelection() { + /* public Pagereference onTemplateSelection() { + System.debug('onTemplateSelection'); PageReference pr = Page.ActionPlanCreation; pr.getParameters().put('refType', this.refType); pr.getParameters().put('refId', this.refId); @@ -543,7 +544,7 @@ public with sharing class ActionPlanCreationController { pr.setRedirect(true); return pr; - } + } */ /** * Saves Action Plan Instance and task. Also creates all due dates for tasks, then redirects to the AP list @@ -559,7 +560,7 @@ public with sharing class ActionPlanCreationController { if (actionPlan.get(s) != null) { objId = (Id) actionPlan.get(s); System.debug('objId: ' + objId); - Schema.DescribeSObjectResult dsr = objId.getSObjectType().getDescribe(); + Schema.DescribeSObjectResult dsr = objId.getSObjectType().getDescribe(SObjectDescribeOptions.DEFERRED); objName = dsr.getName(); System.debug('saveSingleAP objName = ' + objName); break; @@ -1295,7 +1296,7 @@ public with sharing class ActionPlanCreationController { } Schema.DescribeFieldResult dfr = fsm.getSObjectField().getDescribe(); - Schema.DescribeSObjectResult dsr = dfr.getReferenceTo()[0].getDescribe(); + Schema.DescribeSObjectResult dsr = dfr.getReferenceTo()[0].getDescribe(SObjectDescribeOptions.DEFERRED); Boolean hasActivities = activityEnabledObjects.contains(dsr.getName()); Boolean canSeeRelatedObject = dsr.isAccessible(); Boolean canUpdateLookupField = dfr.isUpdateable(); diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls index 6f444d05..8afb3a5e 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls @@ -114,6 +114,7 @@ public without sharing class ActionPlansUtilities { /** * Memoize objects as we describe them, to save on calls + *
    This map is keyprefix => DescribeSObjectResult */ private static Map prefixToDescribe; /** @@ -129,13 +130,13 @@ public without sharing class ActionPlansUtilities { String recordIdString = (String) recordId; String keyPrefix = recordIdString.left(3); if (!prefixToDescribe.containsKey(keyPrefix)) { - prefixToDescribe.put(keyPrefix, recordId.getSobjectType().getDescribe()); + prefixToDescribe.put(keyPrefix, recordId.getSobjectType().getDescribe(SObjectDescribeOptions.DEFERRED)); } return prefixToDescribe.get(keyPrefix); } /** - * Memoize record IDs so we don't have to keep iterating over them if we already have them + * Memoize record IDs to Names so we don't have to keep iterating over them if we already have them */ private static Map recordIdToRecordName; /** @@ -163,6 +164,7 @@ public without sharing class ActionPlansUtilities { mapIDsByObject.get(objectName).add(recId); } + // TODO: Is this really a SOQL query in a loop? Remove it! for (String objName : mapIDsByObject.keySet()) { switch on objName { when 'case' { diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page index 3c1c810c..4626e3ed 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page @@ -76,11 +76,6 @@ For full license text, see the LICENSE file in the repo root or https://opensour }); } - - ").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t(" ",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.leftthis.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter; -this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
    ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
    ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("
    ").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("
    ").attr("role","tooltip"),s=t("
    ").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){"use strict";V.ui=V.ui||{};V.ui.version="1.13.2";var n,i=0,a=Array.prototype.hasOwnProperty,r=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],l=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[l.toLowerCase()]=function(t){return!!V.data(t,l)},V[r]=V[r]||{},s=V[r][t],n=V[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n},V.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2
    ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.2",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0
    ");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g
    ").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
    @@ -226,24 +218,16 @@ @@ -254,58 +238,54 @@ @@ -211,11 +203,11 @@
  • - @@ -226,24 +218,16 @@ @@ -254,58 +238,54 @@

    Note: The Apex used in Flows or via triggers does not require special permissions to run.

    Using Action Plans with Custom Objects

    -

    To Start Using an Object with Action Plans

    +

    Start Using an Object with Action Plans

    1. Create the object and be sure to check "Track Activities" for the object attrributes
    2. @@ -535,7 +515,9 @@

      Test Code for Additional Objects

      Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage (not a best-practice!) just make a test method inserting and then deleting a record.
      Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet.

      -

      Adding a New Custom Object Action Plan button to the Action Plan object

      +

      + Adding a Create Custom Object Action Plan button to the Action Plan object +

      While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template. (Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on @@ -550,8 +532,9 @@

      {!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType="CustomObject__c", refId=CustomObject__c.Id] )}

    3. +
    4. Be sure to remove the standard New button on the Action Plans related list and use this button instead.
    -

    Create Action Plans for multiple Custom Object records

    +

    Create Action Plans for multiple Custom Object records

    Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: diff --git a/docs/installation.html b/docs/installation.html index 83e501db..7d0226fd 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -35,11 +35,7 @@

    @@ -50,10 +46,10 @@ @@ -64,7 +60,7 @@ @@ -75,7 +71,7 @@ @@ -89,115 +85,111 @@ - - - - @@ -211,11 +203,11 @@ - @@ -226,24 +218,16 @@ @@ -254,58 +238,54 @@
      - - - From 0f4465b7f0e812620594874efb5cdfe571e51f45 Mon Sep 17 00:00:00 2001 From: David Schach Date: Fri, 10 Mar 2023 21:19:33 -0800 Subject: [PATCH 45/70] build(pkg): remove redundancy in version create --- scripts/packagedev/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/packagedev/build.sh b/scripts/packagedev/build.sh index 1d2ed35f..2da87cfd 100644 --- a/scripts/packagedev/build.sh +++ b/scripts/packagedev/build.sh @@ -4,7 +4,7 @@ echo "set managed package" sed -i "" "s|\"namespace\": \"\"|\"namespace\": \"LabsActionPlans\"|" sfdx-project.json #sf package version create --code-coverage --path sfdx-source/LabsActionPlans --installation-key-bypass --wait 20 -sfdx force:package:version:create --codecoverage --package "Action Plans" --path sfdx-source/LabsActionPlans --installationkeybypass --wait 20 +sfdx force:package:version:create --codecoverage --path sfdx-source/LabsActionPlans --installationkeybypass --wait 20 echo "unset namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json \ No newline at end of file From 5a5336b981254aedf845b7189072d3a0b1ef3649 Mon Sep 17 00:00:00 2001 From: David Schach Date: Fri, 10 Mar 2023 21:21:33 -0800 Subject: [PATCH 46/70] build(pkg): sfdx to sf version create --- scripts/packagedev/build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/packagedev/build.sh b/scripts/packagedev/build.sh index 2da87cfd..4163b9bf 100644 --- a/scripts/packagedev/build.sh +++ b/scripts/packagedev/build.sh @@ -3,8 +3,8 @@ npm run labsdevhub echo "set managed package" sed -i "" "s|\"namespace\": \"\"|\"namespace\": \"LabsActionPlans\"|" sfdx-project.json -#sf package version create --code-coverage --path sfdx-source/LabsActionPlans --installation-key-bypass --wait 20 -sfdx force:package:version:create --codecoverage --path sfdx-source/LabsActionPlans --installationkeybypass --wait 20 +sf package version create --code-coverage --path sfdx-source/LabsActionPlans --installation-key-bypass --wait 20 +#sfdx force:package:version:create --code-coverage --path sfdx-source/LabsActionPlans --installation-key-bypass --wait 20 echo "unset namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json \ No newline at end of file From 0cdb40faabe262ee66e0de98c3d852a3a428adf8 Mon Sep 17 00:00:00 2001 From: David Schach Date: Fri, 10 Mar 2023 21:25:21 -0800 Subject: [PATCH 47/70] version 4.3.0-11 --- sfdx-project.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sfdx-project.json b/sfdx-project.json index 33dc7675..ad21e648 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -28,6 +28,7 @@ "Action Plans@4.1.0-1": "04t5f000000rJgsAAE", "Action Plans@4.2.0-7": "04t5f000000rK9EAAU", "Action Plans@4.2.1-5": "04t5f000000rKJ9AAM", - "Action Plans@4.3.0-10": "04t5f000000rM4UAAU" + "Action Plans@4.3.0-10": "04t5f000000rM4UAAU", + "Action Plans@4.3.0-11": "04t5f000000rM66AAE" } } \ No newline at end of file From 67b8c9c7afa82e135aca0656abfb1387e2653c04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 02:17:30 +0000 Subject: [PATCH 48/70] build(deps-dev): bump eslint from 8.35.0 to 8.36.0 (#6) Bumps [eslint](https://github.com/eslint/eslint) from 8.35.0 to 8.36.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.35.0...v8.36.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 148 +++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 94 insertions(+), 56 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8cbd2e2..4f5a05bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@salesforce/eslint-plugin-lightning": "^1.0.0", "@salesforce/sfdx-lwc-jest": "^1.3.0", "auto-changelog": "^2.4.0", - "eslint": "^8.35.0", + "eslint": "^8.36.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "husky": "^8.0.3", @@ -783,15 +783,48 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", + "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -856,9 +889,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3714,13 +3747,15 @@ } }, "node_modules/eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -3731,9 +3766,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "espree": "^9.5.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3755,7 +3789,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -4121,9 +4154,9 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "dependencies": { "acorn": "^8.8.0", @@ -8771,18 +8804,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -10564,15 +10585,38 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", + "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true + }, "@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -10618,9 +10662,9 @@ } }, "@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", "dev": true }, "@hapi/hoek": { @@ -12803,13 +12847,15 @@ } }, "eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", "dev": true, "requires": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -12820,9 +12866,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "espree": "^9.5.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -12844,7 +12889,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -13108,9 +13152,9 @@ "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "requires": { "acorn": "^8.8.0", @@ -16500,12 +16544,6 @@ "functions-have-names": "^1.2.2" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", diff --git a/package.json b/package.json index d03325c7..df69a765 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@salesforce/eslint-plugin-lightning": "^1.0.0", "@salesforce/sfdx-lwc-jest": "^1.3.0", "auto-changelog": "^2.4.0", - "eslint": "^8.35.0", + "eslint": "^8.36.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "husky": "^8.0.3", From ff02a587d9201997a1df844a350d9c79256a0bb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 02:17:50 +0000 Subject: [PATCH 49/70] build(deps-dev): bump lint-staged from 13.1.2 to 13.2.0 (#7) Bumps [lint-staged](https://github.com/okonet/lint-staged) from 13.1.2 to 13.2.0. - [Release notes](https://github.com/okonet/lint-staged/releases) - [Commits](https://github.com/okonet/lint-staged/compare/v13.1.2...v13.2.0) --- updated-dependencies: - dependency-name: lint-staged dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 130 ++++++++++++++++++++++++++-------------------- package.json | 2 +- 2 files changed, 75 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4f5a05bc..a5764d20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "husky": "^8.0.3", - "lint-staged": "^13.1.2", + "lint-staged": "^13.2.0", "marked": "^4.2.12", "prettier": "^2.8.4", "prettier-plugin-apex": "^1.12.0" @@ -7629,9 +7629,9 @@ } }, "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, "engines": { "node": ">=10" @@ -7654,24 +7654,24 @@ "dev": true }, "node_modules/lint-staged": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.2.tgz", - "integrity": "sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz", + "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==", "dev": true, "dependencies": { + "chalk": "5.2.0", "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", + "commander": "^10.0.0", "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", + "execa": "^7.0.0", + "lilconfig": "2.1.0", + "listr2": "^5.0.7", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "pidtree": "^0.6.0", "string-argv": "^0.3.1", - "yaml": "^2.1.3" + "yaml": "^2.2.1" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -7683,24 +7683,36 @@ "url": "https://opencollective.com/lint-staged" } }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/lint-staged/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=14" } }, "node_modules/lint-staged/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.0.tgz", + "integrity": "sha512-T6nIJO3LHxUZ6ahVRaxXz9WLEruXLqdcluA+UuTptXmLM7nDAn9lx9IfkxPyzEL21583qSt4RmL44pO71EHaJQ==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "human-signals": "^4.3.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", @@ -7709,19 +7721,19 @@ "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/lint-staged/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.0.tgz", + "integrity": "sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ==", "dev": true, "engines": { - "node": ">=12.20.0" + "node": ">=14.18.0" } }, "node_modules/lint-staged/node_modules/is-stream": { @@ -8258,9 +8270,9 @@ "dev": true }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15724,9 +15736,9 @@ } }, "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true }, "line-column": { @@ -15746,41 +15758,47 @@ "dev": true }, "lint-staged": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.2.tgz", - "integrity": "sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz", + "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==", "dev": true, "requires": { + "chalk": "5.2.0", "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", + "commander": "^10.0.0", "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", + "execa": "^7.0.0", + "lilconfig": "2.1.0", + "listr2": "^5.0.7", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", + "object-inspect": "^1.12.3", "pidtree": "^0.6.0", "string-argv": "^0.3.1", - "yaml": "^2.1.3" + "yaml": "^2.2.1" }, "dependencies": { + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true + }, "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", "dev": true }, "execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.0.tgz", + "integrity": "sha512-T6nIJO3LHxUZ6ahVRaxXz9WLEruXLqdcluA+UuTptXmLM7nDAn9lx9IfkxPyzEL21583qSt4RmL44pO71EHaJQ==", "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "human-signals": "^4.3.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", @@ -15790,9 +15808,9 @@ } }, "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.0.tgz", + "integrity": "sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ==", "dev": true }, "is-stream": { @@ -16177,9 +16195,9 @@ "dev": true }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, "object-keys": { diff --git a/package.json b/package.json index df69a765..3319c263 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "husky": "^8.0.3", - "lint-staged": "^13.1.2", + "lint-staged": "^13.2.0", "marked": "^4.2.12", "prettier": "^2.8.4", "prettier-plugin-apex": "^1.12.0" From f36066624737f029454d9eed5d28a81c6309f24e Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 14 Mar 2023 17:55:02 -0700 Subject: [PATCH 50/70] feat(sfdx): update sfdx to sf --- .github/workflows/pr.yml | 18 +++---- INSTALLATION.md | 10 ++-- README.md | 2 +- package.json | 2 +- scripts/packagedev/blankorg.sh | 4 +- scripts/packagedev/installlatest.sh | 60 +++++++++++++++-------- scripts/packagedev/namespacedev.sh | 6 +-- scripts/packagedev/packagedev.sh | 6 +-- scripts/packagedev/professionalEdition.sh | 15 +++--- scripts/scratchorg.sh | 6 +-- scripts/unmanaged.sh | 2 +- 11 files changed, 76 insertions(+), 55 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 15ba67c2..7cb17ff8 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -47,7 +47,7 @@ jobs: npm install sfdx-cli --location=global nodeInstallPath=$(npm config get prefix) echo "$nodeInstallPath/bin" >> $GITHUB_PATH - sfdx --version + sf --version npm install @salesforce/cli --global # Store secret for dev hub @@ -63,7 +63,7 @@ jobs: # Authenticate dev hub - name: 'Authenticate Dev Hub' - run: sfdx auth:sfdxurl:store -f ./DEVHUB_SFDX_URL.txt -a devhub -d + run: sf org delete scratch ./DEVHUB_SFDX_URL.txt --alias devhub --set-default-dev-hub # Add namespace to project config - name: Add namespace to project config @@ -72,23 +72,23 @@ jobs: # Create scratch org - name: 'Create scratch org' - #run: sfdx force:org:create -f config/project-scratch-def.json -a ActionPlans -s -d 1 -w 20 --noancestors - run: sf force org create --definitionfile config/project-scratch-def.json --setalias ActionPlans --setdefaultusername --noancestors --durationdays 1 --wait 20 + #run: sfdx force:org:create -f config/project-scratch-def.json -a ActionPlans -s -d 1 -w 20 --no-ancestors + run: sf org create scratch --definition-file config/project-scratch-def.json --alias ActionPlans --set-default --no-ancestors --duration-days 1 --wait 20 --target-dev-hub devhub # Deploy source to scratch org - name: 'Push source to scratch org' #run: sfdx force:source:push - run: sf deploy metadata + run: sf deploy metadata --target-org ActionPlans # Assign permissionset - name: 'Assign permissionset to default user' #run: sfdx force:user:permset:assign -n Action_Plans_Admin - run: sf org assign permset --name Action_Plans_Admin + run: sf org assign permset --name Action_Plans_Admin --target-org ActionPlans # Run Apex tests in scratch org - name: 'Run Apex tests' - run: sfdx force:apex:test:run --codecoverage --detailedcoverage --resultformat human -l RunLocalTests --wait 20 --outputdir ./ - #run: sf apex run tests --result-format human --detailed-coverage --wait 20 --test-level RunLocalTests --output-dir ./ + #run: sfdx force:apex:test:run --codecoverage --detailedcoverage --resultformat human -l RunLocalTests --wait 20 --outputdir ./ + run: sf apex run test --code-coverage --detailed-coverage --result-format human --wait 20 --test-level RunLocalTests --output-dir ./ # Upload code coverage to Codecov.io - name: 'Upload code coverage for Apex to Codecov.io' @@ -100,7 +100,7 @@ jobs: # Housekeeping - name: 'Delete scratch org' if: always() - run: sf force org delete --no-prompt --target-org ActionPlans + run: sf org delete scratch --no-prompt --target-org ActionPlans # Remove namespace from project config - name: Remove namespace from project config diff --git a/INSTALLATION.md b/INSTALLATION.md index b26efa4a..9caeddba 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -29,7 +29,7 @@ Follow these instructions to deploy Action Plans to your org. 1. If you haven't already done so, authorize your hub org and provide it with an alias (**myhuborg** in the command below): ```bash - sfdx auth:web:login -d -a myhuborg + sf org login web --set-default --alias myhuborg ``` 1. Clone this repository: @@ -41,7 +41,7 @@ Follow these instructions to deploy Action Plans to your org. 1. From the terminal window, run the installation script ```bash - npm run-script scratchorg + npm run scratchorg ``` or ```bash @@ -60,7 +60,7 @@ Start from a brand-new environment to avoid conflicts with previous work you may 1. Authorize your org and provide it with an alias (**myorg** in the command below): ```bash - sfdx auth:web:login -s -a myorg + sf org login web --set-default --alias myorg ``` 1. Clone this repository: @@ -119,7 +119,7 @@ This repository contains several files that are relevant if you want to add samp - To create a sample Action Plan Template for Account onboarding, run the following: ```bash - sfdx force:apex:execute -f ./data/sample-data.apex + sf apex run -f ./data/sample-data.apex ``` - To create - a sample Flow that uses the sample template @@ -140,7 +140,7 @@ This repository contains several files that are relevant if you want to add samp - When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following: ```bash - sfdx force:apex:execute -f ./data/sample-data-managed.apex + sf apex run -f ./data/sample-data-managed.apex ``` - To create - a sample Flow that uses the sample template diff --git a/README.md b/README.md index cc0484c8..67621eed 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ The Invocable Apex class returns the Salesforce IDs of all the created Action Pl Run the following: ```plaintext -sfdx force:apex:execute -f ./data/sample-data.apex +sf apex run -f ./data/sample-data.apex ``` To use this Template with the included Flow, see the `Create Action Plan From Template` Apex Action in the `New Customer Onboarding Activities` Flow diff --git a/package.json b/package.json index 3319c263..4b286037 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test:unit:coverage": "sfdx-lwc-jest --coverage", "apex:local:start": "node node_modules/prettier-plugin-apex/dist/bin/start-apex-server.js", "apex:local:stop": "node node_modules/prettier-plugin-apex/dist/bin/stop-apex-server.js", - "apex:test:local": "rm -rf testresults && sfdx force:apex:test:run --codecoverage --resultformat human -l RunLocalTests --wait 20 --outputdir testresults", + "apex:test:local": "rm -rf testresults && sf apex run test --detailed-coverage --result-format human --test-level RunLocalTests --wait 20 --output-dir testresults", "pmd:scan:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/ruleset.xml -f csv -r pmd/pmd.csv --cache .pmdCache --short-names", "pmd:scan:deploy:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/deployRules.xml -f csv -r pmd/deploy.csv --cache .pmdCache --short-names", "prettier:apex:local": "prettier --apex-standalone-parser built-in --write \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\"", diff --git a/scripts/packagedev/blankorg.sh b/scripts/packagedev/blankorg.sh index 9e633e1c..ab05a7a2 100644 --- a/scripts/packagedev/blankorg.sh +++ b/scripts/packagedev/blankorg.sh @@ -4,10 +4,10 @@ echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Delete old blank org" -sf force org delete --no-prompt --target-org BlankOrg +sf org delete scratch --no-prompt --target-org BlankOrg echo "Creating new scratch org" -sf force org create --definitionfile config/enterprise-scratch-def.json --setalias BlankOrg --nonamespace --durationdays 7 --noancestors --wait 20 --setdefaultusername +sf org create scratch --definition-file config/enterprise-scratch-def.json --alias BlankOrg --no-namespace --duration-days 7 --no-ancestors --wait 20 --set-default echo "opening org" sf org open --target-org BlankOrg \ No newline at end of file diff --git a/scripts/packagedev/installlatest.sh b/scripts/packagedev/installlatest.sh index a77b8434..32cda92d 100644 --- a/scripts/packagedev/installlatest.sh +++ b/scripts/packagedev/installlatest.sh @@ -1,38 +1,58 @@ +#!/bin/sh # BLANK scratch org # Install latest package (may not be released) npm run labsdevhub echo "Delete old blank org" -sf force org delete --no-prompt --target-org PackageInstallTest +sf org delete scratch --no-prompt --target-org PackageInstallTest echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json -echo "Creating new scratch org" -sf force org create --definitionfile config/enterprise-scratch-def.json --setalias PackageInstallTest --nonamespace --durationdays 7 --noancestors --wait 20 +#LASTCREATEREQUESTID=$(sf package version create list --status Success | tail -1 | awk '{print $1}' | tr -d "\n") +#echo "lastCreateRequestId $LASTCREATEREQUESTID" -LASTCREATEREQUESTID=$(sf package version create list --status Success | tail -1 | awk '{print $1}' | tr -d "\n") -echo "lastCreateRequestId $LASTCREATEREQUESTID" +#PACKAGEVERSIONID=$(sf package version create report --package-create-request-id $LASTCREATEREQUESTID --json | grep -o '"SubscriberPackageVersionId": "[^"]*' | grep -o '[^"]*$') +#echo "packageversionId $PACKAGEVERSIONID" -PACKAGEVERSIONID=$(sf package version create report --package-create-request-id $LASTCREATEREQUESTID --json | grep -o '"SubscriberPackageVersionId": "[^"]*' | grep -o '[^"]*$') -echo "packageversionId $PACKAGEVERSIONID" - -VERSIONJSON=$(sf package version report --package $PACKAGEVERSIONID --json) +#VERSIONJSON=$(sf package version report --package $PACKAGEVERSIONID --json) #echo "versionjson $VERSIONJSON" -VERSIONNUMBER=$(echo $VERSIONJSON | grep '.MajorVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.MinorVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.PatchVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.BuildNumber' | sed 's|[^0-9]||g') +#VERSIONNUMBER=$(echo $VERSIONJSON | grep '.MajorVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.MinorVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.PatchVersion' | sed 's|[^0-9]||g').$(echo $VERSIONJSON | grep '.BuildNumber' | sed 's|[^0-9]||g') + +echo "Find latest version" +VERSIONNUMBER=$(sf package version list --concise | tail -1 | awk '{print $2}') + +echo "Find latest PackageVersionId" +PACKAGEVERSIONID=$(sf package version list --concise | tail -1 | awk '{print $3}') + +echo "Will install version $VERSIONNUMBER with package version $PACKAGEVERSIONID" +echo -n "Continue? (y/n): " + +read continue + +if [ "$continue" = "y" ]; then + + echo "Creating new scratch org" + sf org create scratch --definition-file config/enterprise-scratch-def.json --alias PackageInstallTest --no-namespace --duration-days 7 --no-ancestors --wait 20 + + echo "Installing version $VERSIONNUMBER with package version $PACKAGEVERSIONID" + sf package install --package $PACKAGEVERSIONID --target-org PackageInstallTest --wait 20 -echo "Installing version $VERSIONNUMBER with package version $PACKAGEVERSIONID" -sf package install --package $PACKAGEVERSIONID --target-org PackageInstallTest --wait 20 + echo "Adding unmanaged extension metadata" + sf deploy metadata --source-dir sfdx-source/unmanagedExtension --target-org PackageInstallTest -echo "Adding unmanaged extension metadata" -sf deploy metadata --source-dir sfdx-source/unmanagedExtension --target-org PackageInstallTest + echo "Assigning permission set" + sf org assign permset --name LabsActionPlans__Action_Plans_Admin --target-org PackageInstallTest -echo "Assigning permission set" -sf org assign permset --name LabsActionPlans__Action_Plans_Admin + echo "Install sample data" + sf apex run -f ./data/sample-data-managed.apex --target-org PackageInstallTest -echo "Install sample data" -sfdx force:apex:execute -f ./data/sample-data-managed.apex + echo "opening org" + sf org open --target-org PackageInstallTest -echo "opening org" -sf org open --target-org PackageInstallTest \ No newline at end of file +elif [ "$continue" = "n" ]; then + echo "Exiting" +else + echo "Invalid selection. Please start over." +fi \ No newline at end of file diff --git a/scripts/packagedev/namespacedev.sh b/scripts/packagedev/namespacedev.sh index fa233a78..a2184d1a 100644 --- a/scripts/packagedev/namespacedev.sh +++ b/scripts/packagedev/namespacedev.sh @@ -1,13 +1,13 @@ npm run labsdevhub echo "Cleaning previous scratch org..." -sf force org delete --no-prompt --target-org ActionPlans +sf org delete scratch --no-prompt --target-org ActionPlans echo "Using namespace" sed -i "" "s|\"namespace\": \"\"|\"namespace\": \"LabsActionPlans\"|" sfdx-project.json echo "Creating new scratch org" -#sf force org create --definitionfile config/project-scratch-def.json --setalias ActionPlans --setdefaultusername --noancestors --durationdays 21 +#sf org create scratch --definition-file config/project-scratch-def.json --alias ActionPlans --set-default --no-ancestors --duration-days 21 sf org create scratch --definition-file config/project-scratch-def.json --alias ActionPlans --set-default --no-ancestors --duration-days 21 # For use with namespaced scratch org in package development process @@ -22,7 +22,7 @@ sf org assign permset --name Action_Plans_Admin # # To install sample action plan template echo "Loading sample data" -sfdx force:apex:execute -f ./data/sample-data.apex +sf apex run -f ./data/sample-data.apex #sf apex run --apex-code-file "data/sample-data.apex" —-target-org ActionPlans echo "Clearing namespace" diff --git a/scripts/packagedev/packagedev.sh b/scripts/packagedev/packagedev.sh index 0849c743..a583d64d 100644 --- a/scripts/packagedev/packagedev.sh +++ b/scripts/packagedev/packagedev.sh @@ -1,13 +1,13 @@ npm run labsdevhub echo "Cleaning previous scratch org..." -sf force org delete --no-prompt --target-org ActionPlans +sf org delete scratch --no-prompt --target-org ActionPlans echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Creating new scratch org" -sf force org create --definitionfile config/project-scratch-def.json --setalias ActionPlans --setdefaultusername --noancestors --durationdays 21 +sf org create scratch --definition-file config/project-scratch-def.json --alias ActionPlans --set-default --no-ancestors --duration-days 21 # For use with non-namespaced scratch org in package development process echo "Pushing managed metadata" @@ -21,7 +21,7 @@ sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Loading sample data" -sfdx force:apex:execute -f ./data/sample-data.apex +sf apex run -f ./data/sample-data.apex echo "opening org" sf org open --target-org ActionPlans \ No newline at end of file diff --git a/scripts/packagedev/professionalEdition.sh b/scripts/packagedev/professionalEdition.sh index 79734b89..12eac9f7 100644 --- a/scripts/packagedev/professionalEdition.sh +++ b/scripts/packagedev/professionalEdition.sh @@ -1,27 +1,28 @@ npm run labsdevhub echo "Cleaning previous scratch org..." -sf force org delete --no-prompt --target-org ActionPlansProf +sf org delete scratch --no-prompt --target-org ActionPlansProf echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Creating new scratch org" -#sf force org create --definitionfile config/professional-scratch-def.json --setalias ActionPlansProf --setdefaultusername --durationdays 21 --noancestors -sf force org create edition=Professional --setalias ActionPlansProf --setdefaultusername --noancestors --durationdays 21 +#sf org create scratch --definition-file config/professional-scratch-def.json --alias ActionPlansProf --set-default --no-ancestors --duration-days 21 +sf org create scratch --edition=professional --alias ActionPlansProf --set-default --no-ancestors --duration-days 21 echo "Pushing package metadata" -sf deploy metadata --source-dir sfdx-source/LabsActionPlans +sf deploy metadata --source-dir sfdx-source/LabsActionPlans --target-org ActionPlansProf echo "Deploy unmanaged metadata" -sf deploy metadata --source-dir sfdx-source/unmanaged +sf deploy metadata --source-dir sfdx-source/unmanaged --target-org ActionPlansProf echo "Assigning permission set" -sf org assign permset --name Action_Plans_Admin +sf org assign permset --name Action_Plans_Admin --target-org ActionPlansProf # To install sample action plan template echo "Loading sample data" -sfdx force:apex:execute -f ./data/sample-data.apex +sf apex run -f ./data/sample-data.apex --target-org ActionPlansProf +#sf apex run -f ./data/sample-data.apex --target-org ActionPlansProf echo "opening org" sf org open --target-org ActionPlansProf \ No newline at end of file diff --git a/scripts/scratchorg.sh b/scripts/scratchorg.sh index d3d6c164..30b3ac0b 100755 --- a/scripts/scratchorg.sh +++ b/scripts/scratchorg.sh @@ -2,13 +2,13 @@ # Install script echo "Cleaning previous scratch org..." -sf force org delete --no-prompt --target-org ActionPlans +sf org delete scratch --no-prompt --target-org ActionPlans echo "Clearing namespace" sed -i "" "s|\"namespace\": \"LabsActionPlans\"|\"namespace\": \"\"|" sfdx-project.json echo "Creating new scratch org" -sf force org create --definitionfile config/project-scratch-def.json --setalias ActionPlans --nonamespace --setdefaultusername --noancestors --durationdays 7 +sf org create scratch --definition-file config/project-scratch-def.json --alias ActionPlans --no-namespace --set-default --no-ancestors --duration-days 7 echo "Deploying unmanaged main metadata" sf deploy metadata --source-dir sfdx-source/LabsActionPlans @@ -18,7 +18,7 @@ sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Loading sample data" -sfdx force:apex:execute -f ./data/sample-data.apex +sf apex run -f ./data/sample-data.apex # To install sample Flow and other metadata echo "Deploy unmanaged extra metadata" diff --git a/scripts/unmanaged.sh b/scripts/unmanaged.sh index fc48aa48..e006a914 100644 --- a/scripts/unmanaged.sh +++ b/scripts/unmanaged.sh @@ -15,7 +15,7 @@ sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Adding sample data" -sfdx force:apex:execute -f ./data/sample-data.apex +sf apex run -f ./data/sample-data.apex # To install sample Flow and other metadata echo "deploying sample metadata" From 2e185a07755a54ab4b6e4d323855eab36638a4cd Mon Sep 17 00:00:00 2001 From: David Schach Date: Tue, 14 Mar 2023 17:58:58 -0700 Subject: [PATCH 51/70] fix(sfdx): remove sequential packaging --- sfdx-project.json | 1 - 1 file changed, 1 deletion(-) diff --git a/sfdx-project.json b/sfdx-project.json index ad21e648..32234d12 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -17,7 +17,6 @@ "path": "sfdx-source/unmanaged" } ], - "pushPackageDirectoriesSequentially": true, "name": "Action Plans", "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", From 5cc128cf7efbee040f0b3129008d62a95619c689 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 16:02:22 -0700 Subject: [PATCH 52/70] feat: update auto-changelog config --- .auto-changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.auto-changelog b/.auto-changelog index d140077c..6cae4d38 100644 --- a/.auto-changelog +++ b/.auto-changelog @@ -2,7 +2,7 @@ "output": "CHANGELOG.md", "template": "keepachangelog", "unreleased": true, - "commitLimit": 0, + "commitLimit": 40, "hideCredit": true, "tagPrefix": "v" } From 96070b187dda50d7cfe21a897868c690976b750c Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 17:37:35 -0700 Subject: [PATCH 53/70] fix: remove unnecessary jsencode --- .../classes/ActionPlanCreationController.cls | 84 ++++++++++--------- .../ActionPlansSectionHeaderController.cls | 2 +- .../components/APLightningLookup.component | 8 +- .../default/pages/ActionPlanCreation.page | 17 ++-- 4 files changed, 54 insertions(+), 57 deletions(-) diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls index 6d752851..a09fdeb1 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls @@ -209,7 +209,7 @@ public with sharing class ActionPlanCreationController { * @param apt `ActionPlanTemplate__c` record */ private void initNewActionPlanFromTemplate(Boolean visualforceContext, ActionPlanTemplate__c apt) { - System.debug('in initNewActionPlanFromTemplate'); + //System.debug('in initNewActionPlanFromTemplate'); this.initNewActionPlan(); ActionPlanTemplate__c apTemplate; if (apt == null) { @@ -281,7 +281,7 @@ public with sharing class ActionPlanCreationController { private Map queryAPTaskOwners(ActionPlan__c ap) { Map toReturn = new Map(); if (ap.Id == null) { - System.debug('toReturn: ' + toReturn); + //System.debug('toReturn: ' + toReturn); return toReturn; } @@ -299,7 +299,7 @@ public with sharing class ActionPlanCreationController { toReturn.put(apt.Id, new OwnerWrapper(apt.User__c, apt.User__r.Name)); } } - System.debug('toReturn: ' + toReturn); + //System.debug('toReturn: ' + toReturn); return toReturn; } @@ -381,9 +381,9 @@ public with sharing class ActionPlanCreationController { Schema.SObjectType sot = dfr.getReferenceTo()[0]; Schema.DescribeSObjectResult dsr = sot.getDescribe(SObjectDescribeOptions.DEFERRED); this.relatedObjectName = dsr.getName(); - System.debug('relatedObjectName: ' + this.relatedObjectName); + //System.debug('relatedObjectName: ' + this.relatedObjectName); this.relatedObjDisplayField = chooseDisplayField(this.relatedObjectName); - System.debug('objectDisplayField: ' + this.relatedObjDisplayField); + //System.debug('objectDisplayField: ' + this.relatedObjDisplayField); } } /** @@ -549,7 +549,7 @@ public with sharing class ActionPlanCreationController { try { if (!this.checkCycleDependent()) { - System.debug('Cycle check ok'); + //System.debug('Cycle check ok'); pageRef = this.saveHandler(); } } catch (Exception e) { @@ -586,19 +586,15 @@ public with sharing class ActionPlanCreationController { for (String s : getAllRelationshipFields()) { if (actionPlan.get(s) != null) { objId = (Id) actionPlan.get(s); - System.debug('objId: ' + objId); Schema.DescribeSObjectResult dsr = objId.getSObjectType().getDescribe(SObjectDescribeOptions.DEFERRED); objName = dsr.getName(); - System.debug('saveSingleAP objName = ' + objName); break; } } - oIdsList.add(objId); } else { objName = refType; oIdsList = parseRelatedIDs(refId); - System.debug('objName : ' + objName + ' with IDs ' + refId); } //check for pendingDeletes @@ -683,7 +679,7 @@ public with sharing class ActionPlanCreationController { * @see ActionPlanCreationController.saveMultipleAP */ private PageReference saveHandler() { - System.debug('in saveHandler'); + //System.debug('in saveHandler'); if (!this.actionPlan.SkipWeekends__c) { this.actionPlan.SkipDay__c = null; } @@ -692,7 +688,7 @@ public with sharing class ActionPlanCreationController { if (oIds != null) { oIdsList = parseRelatedIDs(oIds); - System.debug('oidslist: ' + oIdsList); + //System.debug('oidslist: ' + oIdsList); return (oIdsList.size() > 1) ? this.saveMultipleAP() : this.savePageRef(); } else { return this.savePageRef(); @@ -711,7 +707,7 @@ public with sharing class ActionPlanCreationController { try { newApId = saveSingleAP(); } catch (DmlException e) { - System.debug('savePageRef_dmlexception ' + e.getMessage()); + //System.debug('savePageRef_dmlexception ' + e.getMessage()); Apexpages.addMessages(e); return null; } @@ -868,18 +864,8 @@ public with sharing class ActionPlanCreationController { List tasksList = new List(); Integer i = 0; for (APTask__c apTask : this.getAPTasks()) { - //ApTaskWrapper newTaskWrapper; - - //check if the lookup has to be shown - /* if (apTask.Id != null) { - newTaskWrapper = this.mapTasksListBkp.get(apTask.Id); - } */ - ApTaskWrapper apTWrapper = new ApTaskWrapper(actionPlan, apTask, i, actionPlan.TaskRecordTypeID__c); tasksList.add(apTWrapper); - /* if (String.isNotBlank(apTask.Id)) { - this.mapTasksListBkp.put(apTask.Id, apTWrapper); - } */ i++; } if (i > 0) { @@ -1086,6 +1072,8 @@ public with sharing class ActionPlanCreationController { toReturn.add(validId); } catch (Exception ex) { System.debug('RelatedId did not have the form of a valid ID'); + System.debug('exception message: ' + ex.getMessage()); + ApexPages.addMessages(ex); return new List(); } } @@ -1470,15 +1458,17 @@ public with sharing class ActionPlanCreationController { * * @param recordId Single record ID for chosen Action Plan Template * @return `List` Returned records - * @since 2022-02 + * @since 2023-02 * @see ActionPlanSectionHeaderController */ @SuppressWarnings('PMD.ApexSOQLInjection') // We did escape the search text - too bad PMD can't tell @RemoteAction - public static List getRecord(String recordId) { - String queryText = 'SELECT Id, Name FROM ActionPlanTemplate__c WHERE Id = \'' + String.escapeSingleQuotes(recordId) + '\' LIMIT 1'; - //System.debug('querytext ' + String.escapeSingleQuotes(queryText)); - return Database.query(queryText); + public static List queryRecord(String recordId) { + String theRecordId = recordId; + String queryText = 'SELECT Id, Name FROM ActionPlanTemplate__c WHERE Id = :theRecordId LIMIT 1'; + System.debug('querytext ' + String.escapeSingleQuotes(queryText)); + //return Database.query(queryText); + return Database.query(String.escapeSingleQuotes(queryText)); } /** @@ -1486,7 +1476,7 @@ public with sharing class ActionPlanCreationController { * * @param searchText Search string (escaped!) to get matching AP Templates * @return `List` Returned records - * @since 2022-02 + * @since 2023-02 * @see ActionPlanSectionHeaderController */ @SuppressWarnings('PMD.ApexSOQLInjection') // We did escape the search text - too bad PMD can't tell @@ -1502,10 +1492,12 @@ public with sharing class ActionPlanCreationController { /** * Wrapper Class for AP Task SObject + *
      Note: I don't like the way we decide to show the User field - especially if we want to assign to a Queue. + * This part should be refactored next, probably with a User/Queue picklist depending on org settings * @author {@link [Rodrigo Birriel](https://www.linkedin.com/in/rbirriel)} * @since 08/01/2010 * @author {@link [David Schach](https://github.com/dschach)} - * @since 4/2022 + * @since 2022-04 */ public class ApTaskWrapper { /** @@ -1533,6 +1525,18 @@ public with sharing class ActionPlanCreationController { * @return `Boolean` Blank user lookup assigns to parent owner */ private Boolean assignToOwner; + /** + * @description Store page template ID once, in constructor + */ + private String pageTemplateId; + /** + * @description Store if page has relatedIDs once; set in constructor + */ + private Boolean pageHasRelatedIds; + /** + * @description Because it uses a describe call, check user permission once, in constructor + */ + private Boolean canEditUserField; /** * Constructor for wrapper to display related `APTask__c` records on `ActionPlan__c` create/edit page @@ -1564,12 +1568,16 @@ public with sharing class ActionPlanCreationController { apt.Minutes_Reminder__c = ActionPlansUtilities.getDefaultReminderMinutes(); apt.Reminder__c = ActionPlansUtilities.getCheckReminderByDefault(); } + + this.pageTemplateId = ActionPlansUtilities.getEscapedPageParameter('templateId'); + this.pageHasRelatedIds = ApexPages.currentPage().getParameters().containsKey('refId'); + this.canEditUserField = Schema.sObjectType.APTask__c.fields.User__c.isUpdateable(); } /** * Defines if we set the `APTask__c` Assigned To field to required * @author {@link [David Schach](https://github.com/dschach)} - * @return `Boolean` Should the field be required? + * @return `Boolean` Should the field be required (if editable)? */ public Boolean userRequired { get { @@ -1588,23 +1596,19 @@ public with sharing class ActionPlanCreationController { * @return `String` UserReadOnly, UserLookup, OwnerPlaceholder */ public String getUserRender() { - Id templateId = ActionPlansUtilities.getEscapedPageParameter('templateId'); - Boolean hasRelatedIDs = ApexPages.currentPage().getParameters().containsKey('refId'); - - if (templateId != null && apt.User__c != null) { + if (pageTemplateId != null && apt.User__c != null) { return 'UserReadOnly'; - } else if ((templateId == null || hasRelatedIDs == true) && ap.Id == null) { + } else if ((pageTemplateId == null || pageHasRelatedIds == true) && ap.Id == null) { return 'UserLookup'; } - Boolean canEdit = Schema.sObjectType.APTask__c.fields.User__c.isUpdateable(); userRequired = false; if (!assignToOwner) { - if (!canEdit) { + if (!canEditUserField) { apt.User__c = UserInfo.getUserId(); return 'UserReadOnly'; - } else if (apt.Id != null && canEdit) { + } else if (apt.Id != null && canEditUserField) { userRequired = true; return 'UserLookup'; } else if (apt.Id != null) { @@ -1613,7 +1617,7 @@ public with sharing class ActionPlanCreationController { userRequired = true; return 'UserLookup'; } else { - if (apt.User__c == null || !canEdit) { + if (apt.User__c == null || !canEditUserField) { return 'OwnerPlaceholder'; } else if (apt.User__c != null) { return 'UserLookup'; diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls index faad9273..3e5d643f 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansSectionHeaderController.cls @@ -173,7 +173,7 @@ public inherited sharing class ActionPlansSectionHeaderController { * @see ActionPlanCreationController */ @RemoteAction - public static List getRecords(String queryText) { + public static List queryRecords(String queryText) { //System.debug('querytext ' + queryText); return Database.query(queryText); } diff --git a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component index 83d5271f..fa5a340e 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component +++ b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component @@ -84,15 +84,15 @@ For full license text, see the LICENSE file in the repo root or https://opensour j$(recInfoIdInput).val(recId); j$('[id$=SrchDrpDwn{!for}]').fadeOut(); - var queryText = 'SELECT Id, {!displayField} FROM ' + sObjType + ' WHERE Id = \'' + recId + '\''; + var queryText = 'SELECT Id, {!JSENCODE(displayField)} FROM ' + sObjType + ' WHERE Id = \'' + recId + '\''; //console.log('querytext ' + queryText); Visualforce.remoting.Manager.invokeAction( - '{!$RemoteAction.ActionPlansSectionHeaderController.getRecords}', + '{!$RemoteAction.ActionPlansSectionHeaderController.queryRecords}', queryText, function (result, event) { if (event.status) { var record = result[0]; - j$('#{!for}sldsscopediv [id$=searchInput]').val(record.{!JSENCODE(displayField)}).trigger("parentchange", [record.{!JSENCODE(displayField)}]); + j$('#{!for}sldsscopediv [id$=searchInput]').val(record.{!displayField}).trigger("parentchange", [record.{!displayField}]); var recInfoIdInput = document.getElementById('{!$Component.HiddenInput}'); j$(recInfoIdInput).val(recId); } else { @@ -128,7 +128,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour var records = []; Visualforce.remoting.Manager.invokeAction( - '{!$RemoteAction.ActionPlansSectionHeaderController.getRecords}', + '{!$RemoteAction.ActionPlansSectionHeaderController.queryRecords}', queryText, function (result, event) { if (event.status) { diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page index f2e0fc42..165114b7 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page @@ -46,6 +46,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour checkReminderPicklists(); }); + //https://stackoverflow.com/a/36907631 function setSelectWidth() { var yardstick = j$(''); if (j$(this).val() == null) { @@ -170,18 +171,15 @@ For full license text, see the LICENSE file in the repo root or https://opensour j$('[id$=searchtemplateinput_lkwgt]').hide(); } LightningLookupScripts = { - //Function To Get Template Record's Details on Record Click + //Function to get Template record's details on record click recInfo: function (recId) { //j$('[id$=TemplateHiddenInput]').val(recId); var recInfoIdInput = document.getElementById('{!$Component.TemplateHiddenInput}'); var oldTemplateId = j$(recInfoIdInput).val(); j$(recInfoIdInput).val(recId); j$('[id$=SrchTmpltDrpDwn]').fadeOut(); - //ID Based Retrieval Instead of Query to Get Record Details of the Selected Record - //var queryText = "SELECT Id, Name FROM {!JSENCODE(NamespacePrefix)}ActionPlanTemplate__c WHERE Id = '" + recId + "'"; - //console.log('queryText (recInfo): ' + queryText); Visualforce.remoting.Manager.invokeAction( - '{!$RemoteAction.ActionPlanCreationController.getRecord}', + '{!$RemoteAction.ActionPlanCreationController.queryRecord}', recId, function (result, event) { if (event.status) { @@ -201,9 +199,6 @@ For full license text, see the LICENSE file in the repo root or https://opensour if (searchKey == '') { j$('#' + key.attr('aria-activedescendant')).hide(); } - //Querying For Records In Objects Name Matching The Input in The Text Field - //var queryText = "SELECT Id, Name FROM ActionPlanTemplate__c WHERE Name LIKE \'%" + searchKey + "%\' AND Archived__c = false ORDER BY Name ASC LIMIT 10"; - //console.log('queryText (searchRecords): ' + queryText); var searchList = ''; Visualforce.remoting.Manager.invokeAction( '{!$RemoteAction.ActionPlanCreationController.searchTemplates}', @@ -230,7 +225,6 @@ For full license text, see the LICENSE file in the repo root or https://opensour } else { searchList += '
    • No Records Found
    • '; } - j$('[id$=searchResultsUL]').html(searchList); } else { alert(event.message); @@ -295,7 +289,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour size="1" style="font-size: 14px" required="true" - onchange="refreshRelatedObjectsLookUp(this.value);j$('[id$=APName]').val('{!JSENCODE(templateName)}');"> + onchange="refreshRelatedObjectsLookUp(this.value);j$('[id$=APName]').val('templateName');"> @@ -461,7 +455,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour - + {!$ObjectType.APTask__c.fields.User__c.label} @@ -486,7 +480,6 @@ For full license text, see the LICENSE file in the repo root or https://opensour  ] - [ {!$Label.ap_RecordOwner} ] From 6a030e43da9aaff5bd9780803996f9fe63736cf1 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 17:38:04 -0700 Subject: [PATCH 54/70] fix(sfdx): sf apex test correct config --- INSTALLATION.md | 4 ++-- README.md | 2 +- package.json | 2 +- scripts/packagedev/installlatest.sh | 2 +- scripts/packagedev/namespacedev.sh | 2 +- scripts/packagedev/packagedev.sh | 2 +- scripts/packagedev/professionalEdition.sh | 4 ++-- scripts/scratchorg.sh | 2 +- scripts/unmanaged.sh | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/INSTALLATION.md b/INSTALLATION.md index 9caeddba..10789d84 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -119,7 +119,7 @@ This repository contains several files that are relevant if you want to add samp - To create a sample Action Plan Template for Account onboarding, run the following: ```bash - sf apex run -f ./data/sample-data.apex + sf apex run --file ./data/sample-data.apex ``` - To create - a sample Flow that uses the sample template @@ -140,7 +140,7 @@ This repository contains several files that are relevant if you want to add samp - When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following: ```bash - sf apex run -f ./data/sample-data-managed.apex + sf apex run --file ./data/sample-data-managed.apex ``` - To create - a sample Flow that uses the sample template diff --git a/README.md b/README.md index 67621eed..2e4f06eb 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ The Invocable Apex class returns the Salesforce IDs of all the created Action Pl Run the following: ```plaintext -sf apex run -f ./data/sample-data.apex +sf apex run --file ./data/sample-data.apex ``` To use this Template with the included Flow, see the `Create Action Plan From Template` Apex Action in the `New Customer Onboarding Activities` Flow diff --git a/package.json b/package.json index 4b286037..0b62dd97 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test:unit:coverage": "sfdx-lwc-jest --coverage", "apex:local:start": "node node_modules/prettier-plugin-apex/dist/bin/start-apex-server.js", "apex:local:stop": "node node_modules/prettier-plugin-apex/dist/bin/stop-apex-server.js", - "apex:test:local": "rm -rf testresults && sf apex run test --detailed-coverage --result-format human --test-level RunLocalTests --wait 20 --output-dir testresults", + "apex:test:local": "rm -rf testresults && sf apex run test --detailed-coverage --code-coverage --result-format human --test-level RunLocalTests --wait 20 --output-dir testresults", "pmd:scan:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/ruleset.xml -f csv -r pmd/pmd.csv --cache .pmdCache --short-names", "pmd:scan:deploy:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/deployRules.xml -f csv -r pmd/deploy.csv --cache .pmdCache --short-names", "prettier:apex:local": "prettier --apex-standalone-parser built-in --write \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\"", diff --git a/scripts/packagedev/installlatest.sh b/scripts/packagedev/installlatest.sh index 32cda92d..ec29c13d 100644 --- a/scripts/packagedev/installlatest.sh +++ b/scripts/packagedev/installlatest.sh @@ -46,7 +46,7 @@ if [ "$continue" = "y" ]; then sf org assign permset --name LabsActionPlans__Action_Plans_Admin --target-org PackageInstallTest echo "Install sample data" - sf apex run -f ./data/sample-data-managed.apex --target-org PackageInstallTest + sf apex run --file ./data/sample-data-managed.apex --target-org PackageInstallTest echo "opening org" sf org open --target-org PackageInstallTest diff --git a/scripts/packagedev/namespacedev.sh b/scripts/packagedev/namespacedev.sh index a2184d1a..98794cfe 100644 --- a/scripts/packagedev/namespacedev.sh +++ b/scripts/packagedev/namespacedev.sh @@ -22,7 +22,7 @@ sf org assign permset --name Action_Plans_Admin # # To install sample action plan template echo "Loading sample data" -sf apex run -f ./data/sample-data.apex +sf apex run --file ./data/sample-data.apex #sf apex run --apex-code-file "data/sample-data.apex" —-target-org ActionPlans echo "Clearing namespace" diff --git a/scripts/packagedev/packagedev.sh b/scripts/packagedev/packagedev.sh index a583d64d..eb56ce27 100644 --- a/scripts/packagedev/packagedev.sh +++ b/scripts/packagedev/packagedev.sh @@ -21,7 +21,7 @@ sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Loading sample data" -sf apex run -f ./data/sample-data.apex +sf apex run --file ./data/sample-data.apex echo "opening org" sf org open --target-org ActionPlans \ No newline at end of file diff --git a/scripts/packagedev/professionalEdition.sh b/scripts/packagedev/professionalEdition.sh index 12eac9f7..46e64fe9 100644 --- a/scripts/packagedev/professionalEdition.sh +++ b/scripts/packagedev/professionalEdition.sh @@ -21,8 +21,8 @@ sf org assign permset --name Action_Plans_Admin --target-org ActionPlansProf # To install sample action plan template echo "Loading sample data" -sf apex run -f ./data/sample-data.apex --target-org ActionPlansProf -#sf apex run -f ./data/sample-data.apex --target-org ActionPlansProf +sf apex run --file ./data/sample-data.apex --target-org ActionPlansProf +#sf apex run --file ./data/sample-data.apex --target-org ActionPlansProf echo "opening org" sf org open --target-org ActionPlansProf \ No newline at end of file diff --git a/scripts/scratchorg.sh b/scripts/scratchorg.sh index 30b3ac0b..3d831428 100755 --- a/scripts/scratchorg.sh +++ b/scripts/scratchorg.sh @@ -18,7 +18,7 @@ sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Loading sample data" -sf apex run -f ./data/sample-data.apex +sf apex run --file ./data/sample-data.apex # To install sample Flow and other metadata echo "Deploy unmanaged extra metadata" diff --git a/scripts/unmanaged.sh b/scripts/unmanaged.sh index e006a914..cb68c66e 100644 --- a/scripts/unmanaged.sh +++ b/scripts/unmanaged.sh @@ -15,7 +15,7 @@ sf org assign permset --name Action_Plans_Admin # To install sample action plan template echo "Adding sample data" -sf apex run -f ./data/sample-data.apex +sf apex run --file ./data/sample-data.apex # To install sample Flow and other metadata echo "deploying sample metadata" From f27e8dccc8c4977a859e70a939b6c34a624729e8 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 17:39:16 -0700 Subject: [PATCH 55/70] docs: cleanup code, document variables --- .../classes/ActionPlansBuilderUtilities.cls | 27 ++++++++++++------- .../classes/ActionPlansQueueableBuilder.cls | 8 +++--- .../default/classes/ActionPlansUtilities.cls | 22 +++++++-------- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls index cb8acf44..29bc3e3b 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansBuilderUtilities.cls @@ -23,12 +23,22 @@ For full license text, see the LICENSE file in the repo root or https://opensour * @see ActionPlansQueueableBuilder */ public inherited sharing class ActionPlansBuilderUtilities { + /** + * Local store of `aPTListparam` passed to constructor + */ private List baseAPTaskList { get; set; } - + /** + * The constructed `ActionPlan__c` records + */ private List relActionPlans { get; set; } - private List relAPTaskList { get; set; } + /** + * Local store of `refType` passed to constructor + */ private String relatedObjectName { get; set; } + /** + * Local store of `oIdsSet` passed to constructor + */ private Set relatedRecordIDs { get; set; } /** @@ -53,13 +63,13 @@ public inherited sharing class ActionPlansBuilderUtilities { * @param baseObj ActionPlan object * @param aPTListparam Action Plan Task Template records * @param refType Related object Name - * @param oIdsLIst Parent IDs + * @param oIdsSet Parent IDs */ - public ActionPlansBuilderUtilities(ActionPlan__c baseObj, List aPTListparam, String refType, Set oIdsLIst) { + public ActionPlansBuilderUtilities(ActionPlan__c baseObj, List aPTListparam, String refType, Set oIdsSet) { this.baseAPTaskList = aPTListparam; this.relActionPlans = new List(); this.relatedObjectName = refType; - this.relatedRecordIDs = oIdsLIst; + this.relatedRecordIDs = oIdsSet; // if the actionPlan has already an Id, then we are editing an AP and not creating a new one if (baseObj.Id != null) { @@ -71,7 +81,7 @@ public inherited sharing class ActionPlansBuilderUtilities { List apRefFields = ActionPlansUtilities.getCustomRelationshipFields(); Map fieldMap = Schema.SObjectType.ActionPlan__c.fields.getMap(); - for (Id relObjId : oIdsLIst) { + for (Id relObjId : oIdsSet) { // iterate over all related IDs ActionPlan__c ap = new ActionPlan__c(); ap = baseObj.clone(); @@ -102,7 +112,6 @@ public inherited sharing class ActionPlansBuilderUtilities { Integer taskTemplateNameLength = APTask__c.Name.getDescribe().getLength(); this.allTasksToUpsert = new List(); - this.relAPTaskList = new List(); Database.DMLOptions dmlEmail = new Database.DMLOptions(); dmlEmail.EmailHeader.TriggerUserEmail = true; @@ -116,7 +125,7 @@ public inherited sharing class ActionPlansBuilderUtilities { //create ActionPlanTemplatetasks && tasks from base ActionPlan Task List if (this.mode == ApEditMode.MODE_NEW) { - // Working on multiple APs from oidsList + // Working on multiple APs from oIdsSet for (ActionPlan__c ap : relActionPlans) { mapIDAP.put(ap.Id, ap); @@ -267,7 +276,7 @@ public inherited sharing class ActionPlansBuilderUtilities { } } - System.debug('NEW TASK: ' + t); + //System.debug('NEW TASK: ' + t); if (refAPTask.Dependent__c == 'None') { if (refAPTask.SendEmail__c == true) { diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls index 4328cf65..2ef0a2b4 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls @@ -21,27 +21,29 @@ For full license text, see the LICENSE file in the repo root or https://opensour * @see ActionPlansBuilderUtilities */ public inherited sharing class ActionPlansQueueableBuilder implements Queueable { - private ActionPlansBuilderUtilities builtUtil; + private ActionPlansBuilderUtilities buildUtil; /** * Constructor + * @see ActionPlansBuilderUtilities.ActionPlansBuilderUtilities * @param baseObj ActionPlan base * @param aPTList List of the task templates * @param refType The related object name * @param oIdsSet IDs of related parents */ public ActionPlansQueueableBuilder(ActionPlan__c baseObj, List aPTList, String refType, Set oIdsSet) { - this.builtUtil = new ActionPlansBuilderUtilities(baseObj, aPTList, refType, oIdsSet); + this.buildUtil = new ActionPlansBuilderUtilities(baseObj, aPTList, refType, oIdsSet); } /** * Instead of a batch, we use queuable because it's more simple than Batch Apex + *
      TODO: Change email error notification to Lightning notification * @param qc `QueueableContext` (note: not `BatchableContext` which is in Batch Apex) * @see ActionPlansBuilderUtilities.generateActionPlans */ public void execute(QueueableContext qc) { try { - this.builtUtil.generateActionPlans(); + this.buildUtil.generateActionPlans(); if (ActionPlansTestUtilities.forceError) { // A way to force an error without trying to create an SObject record String str = null; diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls index c7d40aeb..c0d871ed 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansUtilities.cls @@ -639,9 +639,7 @@ public without sharing class ActionPlansUtilities { } if (subject.trim().length() > maxChars) { return subject.left(maxChars - 3).trim() + '...'; - } /* else if (subject.trim().length() < maxChars - 3) { - return subject.left(maxChars - 3).trim() + ' - '; - } */ + } return subject; } @@ -652,16 +650,14 @@ public without sharing class ActionPlansUtilities { */ public static Boolean canSendEmails() { Boolean orgCanSendEmails; - if (orgCanSendEmails == null) { - // An attempt to reserve some email capacity is the only means available for determining permissions - // or limits issues. In the case of a lack of permissions, System.NoAccessException is thrown. If - // limits are exhausted then System.HandledException is thrown - try { - Messaging.reserveSingleEmailCapacity(1); - orgCanSendEmails = true; - } catch (Exception e) { - orgCanSendEmails = false; - } + // An attempt to reserve some email capacity is the only means available for determining permissions + // or limits issues. In the case of a lack of permissions, System.NoAccessException is thrown. If + // limits are exhausted then System.HandledException is thrown + try { + Messaging.reserveSingleEmailCapacity(1); + orgCanSendEmails = true; + } catch (Exception e) { + orgCanSendEmails = false; } return orgCanSendEmails; } From 65b6f8c19a6db420a82ade866046cc4ee8067417 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 17:40:08 -0700 Subject: [PATCH 56/70] build(sfdx-scanner): attempt eslint ignore jquery --- .eslintignore | 3 ++- .../staticresources/ActionPlan_Resources/js/.eslintrc.json | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 sfdx-source/LabsActionPlans/main/default/staticresources/ActionPlan_Resources/js/.eslintrc.json diff --git a/.eslintignore b/.eslintignore index e0f243e1..6c95c99e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -13,5 +13,6 @@ **/aura/**/*.tokens **/aura/**/*.xml **/aura/**/*.app -**/ActionPlan_Resources/js/*.js +**/ActionPlan_Resources/js .sfdx +.sf diff --git a/sfdx-source/LabsActionPlans/main/default/staticresources/ActionPlan_Resources/js/.eslintrc.json b/sfdx-source/LabsActionPlans/main/default/staticresources/ActionPlan_Resources/js/.eslintrc.json new file mode 100644 index 00000000..7b5ee16c --- /dev/null +++ b/sfdx-source/LabsActionPlans/main/default/staticresources/ActionPlan_Resources/js/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "ignorePatterns": ["*.js"] +} From 4384b2b79081afc33b677a037321dccd86ac6ccc Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 17:40:37 -0700 Subject: [PATCH 57/70] deps(prettier): ignore sf directory --- .prettierignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.prettierignore b/.prettierignore index be82c773..749dc553 100755 --- a/.prettierignore +++ b/.prettierignore @@ -4,6 +4,7 @@ .localdevserver .sfdx +.sf .vscode/settings.json data/ From 58e0e0dc41352ecf900a510d98fb2972ada75ee4 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 17:48:24 -0700 Subject: [PATCH 58/70] fix: cyclic dependency error display --- .../LabsActionPlans/main/default/pages/ActionPlanCreation.page | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page index 165114b7..56e0a9ff 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page @@ -427,7 +427,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour multiselect="false" size="1" style="min-width: 85px" - onchange="javascript:checkDependent('{!$Component.taskTable.dependent}','{!JSINHTMLENCODE($Label.ap_ItselfDependencyError)})','{!JSINHTMLENCODE($Label.ap_Errors_Cyclic_Dependency_Found)}');" + onchange="javascript:checkDependent('{!$Component.taskTable.dependent}','{!JSINHTMLENCODE($Label.ap_ItselfDependencyError)}','{!JSINHTMLENCODE($Label.ap_Errors_Cyclic_Dependency_Found)}');" styleClass="selectDepending" disabled="{!wrapTask.apt.IsClosed__c}"> From 5fae8c09373dc86c9cc3ae30ad6ac7d27bb47770 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 18:32:27 -0700 Subject: [PATCH 59/70] fix(lookup): escape=false for record name --- .../main/default/components/APLightningLookup.component | 7 ++++--- .../main/default/pages/ActionPlanCreation.page | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component index fa5a340e..620e81c2 100644 --- a/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component +++ b/sfdx-source/LabsActionPlans/main/default/components/APLightningLookup.component @@ -92,6 +92,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour function (result, event) { if (event.status) { var record = result[0]; + console.log(record); j$('#{!for}sldsscopediv [id$=searchInput]').val(record.{!displayField}).trigger("parentchange", [record.{!displayField}]); var recInfoIdInput = document.getElementById('{!$Component.HiddenInput}'); j$(recInfoIdInput).val(recId); @@ -99,7 +100,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour alert(event.message); } }, - { escape: true } + { escape: false } ); }, searchRecords: function (key, sObjType, cObject) { @@ -134,7 +135,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour if (event.status) { records = result; if (records.length > 0) { - + console.log(records); var iconTag = "{!ObjectIconInfo['iconTag']}"; var objectIcon = "{!ObjectIconInfo['iconURL']}"; var iconStyle = "{!ObjectIconInfo['iconStyle']}"; @@ -164,7 +165,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour alert(event.message); } }, - { escape: true } + { escape: false } ); } } diff --git a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page index 56e0a9ff..a1c8030a 100644 --- a/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page +++ b/sfdx-source/LabsActionPlans/main/default/pages/ActionPlanCreation.page @@ -189,7 +189,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour alert(event.message); } }, - { escape: true } + { escape: false } ); }, searchRecords: function (key) { @@ -230,7 +230,7 @@ For full license text, see the LICENSE file in the repo root or https://opensour alert(event.message); } }, - { escape: true } + { escape: false } ); } }; From 349e1fba2667cda23032616aabe23cb4a64b8b4c Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 21:39:41 -0700 Subject: [PATCH 60/70] chore: promote package 4.3.0 --- sfdx-project.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sfdx-project.json b/sfdx-project.json index 32234d12..5678383d 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -6,7 +6,7 @@ "package": "Action Plans", "versionName": "Spring 2023 v4.3", "versionNumber": "4.3.0.NEXT", - "ancestorVersion": "4.2.0", + "ancestorVersion": "HIGHEST", "releaseNotesUrl": "https://github.com/SalesforceLabs/ActionPlansV4/blob/main/README.md", "definitionFile": "config/install-scratch-def.json", "versionDescription": "Action Plans now suppports Tasks owned by Queues and Professional Edition", @@ -27,7 +27,7 @@ "Action Plans@4.1.0-1": "04t5f000000rJgsAAE", "Action Plans@4.2.0-7": "04t5f000000rK9EAAU", "Action Plans@4.2.1-5": "04t5f000000rKJ9AAM", - "Action Plans@4.3.0-10": "04t5f000000rM4UAAU", - "Action Plans@4.3.0-11": "04t5f000000rM66AAE" + "Action Plans@4.3.0-11": "04t5f000000rM66AAE", + "Action Plans@4.3.0-13": "04t5f000000rM7nAAE" } } \ No newline at end of file From 0ae95fc126c15e1ad047b3f382d1c135044a8d3e Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 22:06:46 -0700 Subject: [PATCH 61/70] build(changelog): update changelog script --- CHANGELOG.md | 119 ++++++++++++++++++++++++++++++++++++++ package.json | 2 +- scripts/auto-changelog.sh | 15 +++++ 3 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 scripts/auto-changelog.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cd71328..a05f0e97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Merged +- build(deps-dev): bump lint-staged from 13.1.2 to 13.2.0 [`#7`](https://github.com/dschach/ActionPlansV4/pull/7) +- build(deps-dev): bump eslint from 8.35.0 to 8.36.0 [`#6`](https://github.com/dschach/ActionPlansV4/pull/6) - build(deps-dev): bump eslint from 8.34.0 to 8.35.0 [`#4`](https://github.com/dschach/ActionPlansV4/pull/4) - feat(tests): update tests (assertions, messages) [`#3`](https://github.com/dschach/ActionPlansV4/pull/3) - feat: update API to 57.0 [`#1`](https://github.com/dschach/ActionPlansV4/pull/1) @@ -21,6 +23,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Version 4.3.0 [`#44`](https://github.com/dschach/ActionPlansV4/pull/44) - Codecov to v3 [`#41`](https://github.com/dschach/ActionPlansV4/pull/41) +### Commits + +- build(npm): update package dependencies [`e40b10a`](https://github.com/dschach/ActionPlansV4/commit/e40b10a0129cc415527a4876ae6bf2f5893369b5) +- lightning lookup w/o API v1 [`e8dac8e`](https://github.com/dschach/ActionPlansV4/commit/e8dac8e7d0ab626fbb18bce7587a092b80a646cb) +- docs(ApexDox): rerun ApexDox [`bc720e2`](https://github.com/dschach/ActionPlansV4/commit/bc720e21f85ee44c9fbecd2ddc9c5b12523b24a4) +- docs(ApexDox): include Installation & Changelog [`4910af9`](https://github.com/dschach/ActionPlansV4/commit/4910af9d9714cb57ce662e0057c00a97a5897e3f) +- feat(docs): ApexDox version upgrade [`178e1ce`](https://github.com/dschach/ActionPlansV4/commit/178e1ce30ff4bcf6505429fcf809e7ec742f08c3) +- build: move tests folder into classes [`99d78d5`](https://github.com/dschach/ActionPlansV4/commit/99d78d5a3302b6881a99d01c370c3c6e7cc523f4) +- Tests use Assert class [`59d6ef2`](https://github.com/dschach/ActionPlansV4/commit/59d6ef2150bf29d68d79014be463923e83e39e35) +- build(sfdx): change sfdx to sf commands [`994b3f2`](https://github.com/dschach/ActionPlansV4/commit/994b3f241cd5e5ab81955571bc6ad9ab839d4c38) +- revert(API): use 56.0 to avoid GVS bug [`6eb588a`](https://github.com/dschach/ActionPlansV4/commit/6eb588a4439d1787e613995f4dbe6e9c808df7e1) +- feat: finish Professional Edition template lookup [`415fdcf`](https://github.com/dschach/ActionPlansV4/commit/415fdcfc8f784af02a6b5c22a25e38e52dffce93) +- docs: update CanTheUser comments [`22ea89c`](https://github.com/dschach/ActionPlansV4/commit/22ea89c57e2a545cb2443e4f8f9c13aabff9adb9) +- API 56.0 [`4303659`](https://github.com/dschach/ActionPlansV4/commit/43036599390a3fec5617f9b39986b030382960cb) +- fix: page redirect on template from object [`70f43ba`](https://github.com/dschach/ActionPlansV4/commit/70f43ba924930914499b9ad3cdc8d5dc0c9796be) +- feat(sfdx): update sfdx to sf [`f360666`](https://github.com/dschach/ActionPlansV4/commit/f36066624737f029454d9eed5d28a81c6309f24e) +- fix: remove unnecessary jsencode [`96070b1`](https://github.com/dschach/ActionPlansV4/commit/96070b187dda50d7cfe21a897868c690976b750c) +- fix: redirect on template choice for records [`8bf011b`](https://github.com/dschach/ActionPlansV4/commit/8bf011b5eb9e965f0f6016233b81a1aa239edc25) +- Deploy rules & scripts [`5b80488`](https://github.com/dschach/ActionPlansV4/commit/5b80488663d56cc79ba90ffcf6a727c44d1a588a) +- APTemplate lookup actions [`d34eaaf`](https://github.com/dschach/ActionPlansV4/commit/d34eaaf3d3c6958bb5115215259b81a491dfe266) +- fix(docs): update ApexDox [`e8481e8`](https://github.com/dschach/ActionPlansV4/commit/e8481e82bce1c97f8b44a5e47178f8ca815c8824) +- ci(codeQL): delete codeQL d/t IP address [`fa066cf`](https://github.com/dschach/ActionPlansV4/commit/fa066cfc4ddeb5017957abe873bfc8ad22f155f6) +- dependabot auto-merge [`b5e5d4f`](https://github.com/dschach/ActionPlansV4/commit/b5e5d4f4a1e1e2db2f9ffd8e09b4e7ffd67488cf) +- docs: cleanup code, document variables [`f27e8dc`](https://github.com/dschach/ActionPlansV4/commit/f27e8dccc8c4977a859e70a939b6c34a624729e8) +- feat: Update tests to use Assert class [`2069b97`](https://github.com/dschach/ActionPlansV4/commit/2069b97f7a65a68966efb2c49867a05a1f587719) +- fix(build): Update plugin dependencies [`4bf530c`](https://github.com/dschach/ActionPlansV4/commit/4bf530c6e5f1b60dcef86408e3acffc2376993dd) +- Update scratch org definition files [`851171c`](https://github.com/dschach/ActionPlansV4/commit/851171c6b2120b3e421909bb627fc2e454a2d4f7) +- chore: Scratch org shape updates [`fbe390e`](https://github.com/dschach/ActionPlansV4/commit/fbe390e7745f2d508a221d900d98f47feda0f061) +- docs(Apex): test comments [`5056ebc`](https://github.com/dschach/ActionPlansV4/commit/5056ebc9d8665fc70f4bf6d566a160c86251d5b6) +- ci: update PR sfdx to sf, npm installation [`77fa739`](https://github.com/dschach/ActionPlansV4/commit/77fa73957caf481dd5081a258d6b5a9e3c72decc) +- build(changelog): instructions & tag prefix [`0ae955b`](https://github.com/dschach/ActionPlansV4/commit/0ae955b8fc5056351c4c1f4ad66690fb56f53ea5) +- Beta 4.3.0-9 [`d4b477c`](https://github.com/dschach/ActionPlansV4/commit/d4b477c46a7487fd6ff07784b91ac99979e8bc71) +- fix(sfdx): sf apex test correct config [`6a030e4`](https://github.com/dschach/ActionPlansV4/commit/6a030e43da9aaff5bd9780803996f9fe63736cf1) +- feat: sfdx-scanner config [`42c6889`](https://github.com/dschach/ActionPlansV4/commit/42c6889df390a41195629f11d8453d429d64e769) +- docs(README): add image descriptions [`2b9f999`](https://github.com/dschach/ActionPlansV4/commit/2b9f999452002ff43152102cbb85348dbd0e1d7e) +- Dependabot alerts [`dea7b92`](https://github.com/dschach/ActionPlansV4/commit/dea7b929eaf6d555762795865fcfd2d12181d403) +- Bug Report Template [`acfda0a`](https://github.com/dschach/ActionPlansV4/commit/acfda0ae35984f3b48103be7fea9cce6411d2791) +- Bug template [`516f70c`](https://github.com/dschach/ActionPlansV4/commit/516f70c863549733964884939ef6b2cd77ca46d1) +- build(pmd): remove updatepmd [`0ef9783`](https://github.com/dschach/ActionPlansV4/commit/0ef9783b4c94c86ba07429ca36aa1abb650d9c19) +- feat(scripts): update latest jQuery [`992988e`](https://github.com/dschach/ActionPlansV4/commit/992988e433f53d6cf7099902d2b9ab79ba86503e) +- fix(lookup): escape=false for record name [`5fae8c0`](https://github.com/dschach/ActionPlansV4/commit/5fae8c09373dc86c9cc3ae30ad6ac7d27bb47770) +- Changelog [`6516aa9`](https://github.com/dschach/ActionPlansV4/commit/6516aa97d738d0742cf552c8cd608d5761c3ae09) + ## [4.2.1](https://github.com/dschach/ActionPlansV4/compare/4.2.0...4.2.1) - 2022-05-25 ### Merged @@ -34,6 +79,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Version 4.2.1 (#37) [`#35`](https://github.com/dschach/ActionPlansV4/issues/35) [`#34`](https://github.com/dschach/ActionPlansV4/issues/34) - Namespace to sample code (#36) [`#35`](https://github.com/dschach/ActionPlansV4/issues/35) +### Commits + +- Correct Apex global method syntax [`eaee330`](https://github.com/dschach/ActionPlansV4/commit/eaee3301c8502edcf27a99c0955b44ce063ca0d0) +- ApexDox update [`da133ff`](https://github.com/dschach/ActionPlansV4/commit/da133ffed6f45bd0c4ebb8cf498a0223ed5d02d0) +- Promote v2.4.0.7 [`70849b9`](https://github.com/dschach/ActionPlansV4/commit/70849b9570742c112054b161973d9584cf0cc5a1) +- Changelog, packaging workflow [`5b77ddb`](https://github.com/dschach/ActionPlansV4/commit/5b77ddba5da486f283825e3304d1be5b8dce298c) +- Packaging workflow [`9107fd9`](https://github.com/dschach/ActionPlansV4/commit/9107fd99c3f3f36c4d070960412837f98b20af88) + ## [4.2.0](https://github.com/dschach/ActionPlansV4/compare/4.1.0...4.2.0) - 2022-04-01 ### Merged @@ -46,6 +99,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgrading Instructions [`#22`](https://github.com/dschach/ActionPlansV4/pull/22) - Add Codecov [`#21`](https://github.com/dschach/ActionPlansV4/pull/21) +### Commits + +- ApexDox remove unused modifiers [`3b321db`](https://github.com/dschach/ActionPlansV4/commit/3b321dbd7d72eb7214e6533d5f24da105c76e6d5) +- Create codeql-analysis.yml [`2822bc5`](https://github.com/dschach/ActionPlansV4/commit/2822bc510e267148e3800d3241414893d0b0d92e) +- Highlight inline code security update [`57662e7`](https://github.com/dschach/ActionPlansV4/commit/57662e75737928c6362853cbaec4bafd199b6f25) +- Pull Request workflow update [`2c84f4d`](https://github.com/dschach/ActionPlansV4/commit/2c84f4dfd17062ddf4d08ff04d773f2a3d3f3d4b) +- Update and rename CONTRIBUTION.md to CONTRIBUTING.md [`cb7f3c1`](https://github.com/dschach/ActionPlansV4/commit/cb7f3c1c1ceea838050e6afe65eb89b556ab1d38) +- update Prettierignore [`37aeafa`](https://github.com/dschach/ActionPlansV4/commit/37aeafa8c42bdb08ba167eb3e82898ba16a2abf1) +- Add link to Apex documentation [`96f9cde`](https://github.com/dschach/ActionPlansV4/commit/96f9cde62ce62e1e568d609838250653c35ec7cb) +- Sample template update [`4c957ca`](https://github.com/dschach/ActionPlansV4/commit/4c957ca63a3a93f0378d95bba563ad86402b990d) +- Update CONTRIBUTING.md [`9e3b175`](https://github.com/dschach/ActionPlansV4/commit/9e3b175772293fdebb6ae0a17e574d0d3f8cbc33) +- Add AppExchange listing to README [`760dfc9`](https://github.com/dschach/ActionPlansV4/commit/760dfc91b97ed879aeec8d0ca1228cc46f4ad154) +- Sample flow update [`397b763`](https://github.com/dschach/ActionPlansV4/commit/397b76342026c63507cacc97a147a43287cc02ee) + ## [4.1.0](https://github.com/dschach/ActionPlansV4/compare/4.0.0-9...4.1.0) - 2022-03-17 ### Merged @@ -55,6 +122,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Pre-Commit ApexDox cleanup [`#16`](https://github.com/dschach/ActionPlansV4/pull/16) - Scripts, Cleanup, New Build [`#15`](https://github.com/dschach/ActionPlansV4/pull/15) +### Commits + +- Update issue templates [`e2be869`](https://github.com/dschach/ActionPlansV4/commit/e2be869204599eed28a990fffa43837c3ea3b5be) +- Import file language [`5be81e1`](https://github.com/dschach/ActionPlansV4/commit/5be81e17568678735f289c05a080589a5e63bfab) +- Start package versioning via release [`afd008a`](https://github.com/dschach/ActionPlansV4/commit/afd008adb2f753dbe5742e9027ea70121b169b9d) +- ISV toolkit md exclusion [`022c65a`](https://github.com/dschach/ActionPlansV4/commit/022c65a67eba69f1c220e006a70ca6ececad03b9) +- AppExchange link [`31f2e02`](https://github.com/dschach/ActionPlansV4/commit/31f2e028c89548c1cea2677693f0dabc277d9ae1) +- Apex highlighting [`0609b37`](https://github.com/dschach/ActionPlansV4/commit/0609b3733a8f5066037768cb1ac6145357d80b6f) + ## 4.0.0-9 - 2022-02-23 ### Merged @@ -70,3 +146,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Version 4.0.0.7 [`#3`](https://github.com/dschach/ActionPlansV4/pull/3) - Code comment cleanup [`#2`](https://github.com/dschach/ActionPlansV4/pull/2) - ApexDocs, Project Files, PMD rules [`#1`](https://github.com/dschach/ActionPlansV4/pull/1) + +### Commits + +- Documentation with ApexDox [`236c66b`](https://github.com/dschach/ActionPlansV4/commit/236c66b82c79062836ee059917842bf25d42ac39) +- Iniital commit, updated for namespace [`f4d7498`](https://github.com/dschach/ActionPlansV4/commit/f4d74984e51128788ee329a03764b521b9515b68) +- migrate to new sfdx-falcon directory [`0cde1dc`](https://github.com/dschach/ActionPlansV4/commit/0cde1dc403755cdf37dd7bd9e31155fce65277df) +- move to sfdx-source falcon directory structure [`2edf46d`](https://github.com/dschach/ActionPlansV4/commit/2edf46d356f0e2c029159c2818d874a3a6192620) +- package files [`16c26fc`](https://github.com/dschach/ActionPlansV4/commit/16c26fc10e24f9331c16973cca7c9ed0b2ce753c) +- Prettier first pass [`9467195`](https://github.com/dschach/ActionPlansV4/commit/94671959b397325f040c898a1e01173eafe284cc) +- ApexDox [`1fc534b`](https://github.com/dschach/ActionPlansV4/commit/1fc534ba2f94fd715972537598f5146760866aed) +- ApexDox [`48589f7`](https://github.com/dschach/ActionPlansV4/commit/48589f7481ed8bb5baa565def244c4029f0dd0d2) +- First commit - ReadMe & Installation [`406674a`](https://github.com/dschach/ActionPlansV4/commit/406674a13cb7b5c68db946ff8038c9df16e62d63) +- package files [`45278ca`](https://github.com/dschach/ActionPlansV4/commit/45278caa0d7f0d97141c5950fa0be8831e7c1c95) +- Install/update prettier [`62fd10a`](https://github.com/dschach/ActionPlansV4/commit/62fd10a3fad113f2ee39a0e6dc642d1c84dc4dfe) +- Exclude unmanaged and unpackaged metadata [`32bcb00`](https://github.com/dschach/ActionPlansV4/commit/32bcb0020732b1fa6aba8c9776fe1b0ac3d2b474) +- Unmanaged metadata for managed installation [`ed24492`](https://github.com/dschach/ActionPlansV4/commit/ed244927e79d18b8bb5085364c1481e92d97e6b4) +- Remove non-dev org actions [`29208d8`](https://github.com/dschach/ActionPlansV4/commit/29208d835bf4edd3952f981db85e30fbd21b6ae3) +- Install script for custom setting [`11e6b5d`](https://github.com/dschach/ActionPlansV4/commit/11e6b5d9e07f01a5a60521faa7a9632618fbfd66) +- Update for EE orgs [`83e459d`](https://github.com/dschach/ActionPlansV4/commit/83e459d805cfa59c2f381f53949ddcddeb7d9bd0) +- Fix lookup for portal users, custom setting DML [`dc6ea13`](https://github.com/dschach/ActionPlansV4/commit/dc6ea13871cf95df4d3d76f931edfdef373d04a1) +- Support unmanaged metadata [`f8681e8`](https://github.com/dschach/ActionPlansV4/commit/f8681e880dfae3eec6b2a5427b6df65a9141224b) +- Add gitignore [`433c579`](https://github.com/dschach/ActionPlansV4/commit/433c57938dd801ad1078cfc58bb2aa7b3b01fba8) +- Documentation and support files [`9993d83`](https://github.com/dschach/ActionPlansV4/commit/9993d83093101ab05f5057b7f726350065c0c4f6) +- ApexDox [`c5c3144`](https://github.com/dschach/ActionPlansV4/commit/c5c314412d1f42d5138b9575c317333ecc18e83a) +- Simplify Account layout [`536459a`](https://github.com/dschach/ActionPlansV4/commit/536459a34b23fed29841d63a3b77fda154eca876) +- ApexDox [`2662ae8`](https://github.com/dschach/ActionPlansV4/commit/2662ae868db1d30dd87eec48e81cf8a9568cff65) +- Create first package version [`53b252f`](https://github.com/dschach/ActionPlansV4/commit/53b252febede7e20351f82346a2b0dfc68b4b7f6) +- Org metadata and ignore files [`0725de0`](https://github.com/dschach/ActionPlansV4/commit/0725de02a377057af7f4fb9f6901d6d8384176ba) +- Removed TradeStyle to allow installation in regular orgs [`fa17e9d`](https://github.com/dschach/ActionPlansV4/commit/fa17e9d97d6ef1349475d8b7cde49606011b62fb) +- Handle ID lists [`b07c6a7`](https://github.com/dschach/ActionPlansV4/commit/b07c6a72c5c8162d55510d4c50da52bd3e983855) +- Works in managed package with unmanaged objects [`ef595b4`](https://github.com/dschach/ActionPlansV4/commit/ef595b4c57f44ee08b2d94bcf27738ed485fd1f8) +- Simplify installation instructions [`bdb2de3`](https://github.com/dschach/ActionPlansV4/commit/bdb2de3a738f00eab23287965e354bdc2bbf41f6) +- Readme update, ignore record types [`1412184`](https://github.com/dschach/ActionPlansV4/commit/1412184ae57ace230eb73cb9652e9ecbdcd5c184) +- Fix fieldset test visibility bug [`644087e`](https://github.com/dschach/ActionPlansV4/commit/644087e795cae2214dd2a775259537e07c4fc811) +- Class and method accessibility [`7515c2a`](https://github.com/dschach/ActionPlansV4/commit/7515c2ac2c60047b2f6cda655b73c50afc4727e9) +- Remove debugs [`07e4ee7`](https://github.com/dschach/ActionPlansV4/commit/07e4ee75d69ba6a9fb8dbb34e5aba3cdb3bad8b3) +- Release version 4.0.0-6 [`3f7a3fa`](https://github.com/dschach/ActionPlansV4/commit/3f7a3fa615c1623aad90cc105284243904d6139d) +- Script for working with custom object invocable [`9fe7c54`](https://github.com/dschach/ActionPlansV4/commit/9fe7c54ae80fa57baf48603bafbeaf227861c6e2) +- Create custom setting on install [`c3f795c`](https://github.com/dschach/ActionPlansV4/commit/c3f795c8b833df25877746ba17579c1493f9c02f) +- New task layout [`c31ec9f`](https://github.com/dschach/ActionPlansV4/commit/c31ec9f4f91c89e21cdb476c4053c6f0140f963a) +- Unprotect custom metadata so users can edit [`f947d4b`](https://github.com/dschach/ActionPlansV4/commit/f947d4b2c6632a19ea680352799a75eac8bc6176) +- Beta 3 [`19ace7e`](https://github.com/dschach/ActionPlansV4/commit/19ace7e5d04c68e62bfb37125e5941ad119f6330) +- ApexDox [`0076c54`](https://github.com/dschach/ActionPlansV4/commit/0076c543bc60834541223e0da28c749ab6a33367) diff --git a/package.json b/package.json index 0b62dd97..5f07086a 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "prepare": "husky install", "precommit": "lint-staged", "labsdevhub": "sf config set target-dev-hub=LabsLDO", - "version": "auto-changelog && git add CHANGELOG.md", + "version": ". scripts/auto-changelog.sh", "apexdoxSetup": ". doc-assets/ApexDoxSetup.sh" }, "devDependencies": { diff --git a/scripts/auto-changelog.sh b/scripts/auto-changelog.sh new file mode 100644 index 00000000..dd8310b9 --- /dev/null +++ b/scripts/auto-changelog.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +auto-changelog +git add CHANGELOG.md + +printf '' > "doc-assets/changelog.html" +echo >> "doc-assets/changelog.html" +npx marked -i CHANGELOG.md --breaks >> "doc-assets/changelog.html" + +cp doc-assets/changelog.html docs/changelog.html + +git add doc-assets/changelog.html +git add docs/changelog.html + +git commit -m "docs: update changelog" \ No newline at end of file From 22d1e3aa1de1ad8ca40f738b962674be025a91dd Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 22:07:22 -0700 Subject: [PATCH 62/70] docs(ApexDox): update ApexDox --- doc-assets/INSTALLATION.html | 10 +- doc-assets/README.html | 2 +- doc-assets/changelog.html | 197 +++- docs/ActionPlanCreateInvocable.html | 104 +- docs/ActionPlanCreateInvocableTest.html | 100 +- docs/ActionPlanCreationController.html | 408 ++++---- docs/ActionPlanCreationControllerTest.html | 96 +- docs/ActionPlanCreationTaskWrapperTest.html | 96 +- docs/ActionPlanDetailController.html | 114 ++- docs/ActionPlanDetailControllerTest.html | 96 +- docs/ActionPlanTemplateCreationCntrlTest.html | 98 +- .../ActionPlanTemplateCreationController.html | 124 ++- docs/ActionPlanTemplateDetailCntrlTest.html | 96 +- docs/ActionPlanTemplateDetailController.html | 104 +- docs/ActionPlanTemplateExport.html | 100 +- docs/ActionPlanTemplateExportTest.html | 96 +- docs/ActionPlanTemplateImport.html | 100 +- docs/ActionPlanTemplateImportCntrlTest.html | 110 ++- docs/ActionPlanTemplateImportController.html | 98 +- docs/ActionPlansBuilderUtilities.html | 171 ++-- docs/ActionPlansCreateMultipleAPsExtTest.html | 96 +- ...ActionPlansCreateMultipleAPsExtension.html | 100 +- docs/ActionPlansDeleteMultipleAPExtTest.html | 98 +- .../ActionPlansDeleteMultipleAPExtension.html | 100 +- docs/ActionPlansObjectTriggersTest.html | 98 +- docs/ActionPlansPostInstallScript.html | 96 +- docs/ActionPlansPostInstallScriptTest.html | 96 +- docs/ActionPlansQueueableBuilder.html | 120 ++- docs/ActionPlansQueueableBuilderTest.html | 96 +- docs/ActionPlansRedirect.html | 110 ++- docs/ActionPlansRedirectTest.html | 96 +- docs/ActionPlansSectionHeaderController.html | 162 +-- ...ctionPlansSectionHeaderControllerTest.html | 96 +- docs/ActionPlansTaskTriggerUtilities.html | 102 +- docs/ActionPlansTaskTriggerUtilitiesTest.html | 98 +- docs/ActionPlansTestUtilities.html | 102 +- docs/ActionPlansTriggerHandlers.html | 98 +- docs/ActionPlansUtilities.html | 158 +-- docs/ActionPlansUtilitiesTest.html | 96 +- docs/CanTheUser.html | 106 +- docs/CanTheUserTest.html | 96 +- docs/assets/search-idx.js | 14 +- docs/changelog.html | 921 +++++++++--------- docs/index.html | 98 +- docs/installation.html | 106 +- 45 files changed, 3338 insertions(+), 2341 deletions(-) diff --git a/doc-assets/INSTALLATION.html b/doc-assets/INSTALLATION.html index e8c1ddcd..8fb976fe 100644 --- a/doc-assets/INSTALLATION.html +++ b/doc-assets/INSTALLATION.html @@ -21,7 +21,7 @@

      Installing the App using a Scrat

  • If you haven't already done so, authorize your hub org and provide it with an alias (myhuborg in the command below):

    -
    sfdx auth:web:login -d -a myhuborg
    +
    sf org login web --set-default --alias myhuborg
     
  • Clone this repository:

    @@ -30,7 +30,7 @@

    Installing the App using a Scrat

  • From the terminal window, run the installation script

    -
    npm run-script scratchorg
    +
    npm run scratchorg
     

    or

    . scripts/scratchorg.sh
    @@ -44,7 +44,7 @@ 

    sfdx auth:web:login -s -a myorg +
    sf org login web --set-default --alias myorg
     

  • Clone this repository:

    @@ -90,7 +90,7 @@

    sfdx force:apex:execute -f ./data/sample-data.apex +
    sf apex run --file ./data/sample-data.apex
     

  • To create

    @@ -111,7 +111,7 @@

    Data/Metadata Import (Optional - ONLY if using the AppExchange managed package)

    • When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following:

      -
      sfdx force:apex:execute -f ./data/sample-data-managed.apex
      +
      sf apex run --file ./data/sample-data-managed.apex
       
    • To create

      diff --git a/doc-assets/README.html b/doc-assets/README.html index c2535a06..5fd2fd26 100644 --- a/doc-assets/README.html +++ b/doc-assets/README.html @@ -242,7 +242,7 @@

      Flow

      The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps.

      (Optional) Sample Action Plan Template for Account onboarding

      Run the following:

      -
      sfdx force:apex:execute -f ./data/sample-data.apex
      +
      sf apex run --file ./data/sample-data.apex
       

      To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow

      Set input variables for the Flow action

      diff --git a/doc-assets/changelog.html b/doc-assets/changelog.html index cb5e6f6b..b52f8f2a 100644 --- a/doc-assets/changelog.html +++ b/doc-assets/changelog.html @@ -2,59 +2,184 @@

      Changelog

      All notable changes to this project will be documented in this file.

      The format is based on Keep a Changelog
      and this project adheres to Semantic Versioning.

      -

      Unreleased

      +

      Unreleased

      Merged

        -
      • Cosmetic rearrangements, apexdoc #55
      • -
      • 4.3.0 Queues, Child Objects #53
      • -
      • Version 4.3.0 pt 2 #47
      • -
      • Version 4.3.0 #44
      • -
      • Codecov to v3 #41
      • +
      • build(deps-dev): bump lint-staged from 13.1.2 to 13.2.0 #7
      • +
      • build(deps-dev): bump eslint from 8.35.0 to 8.36.0 #6
      • +
      • build(deps-dev): bump eslint from 8.34.0 to 8.35.0 #4
      • +
      • feat(tests): update tests (assertions, messages) #3
      • +
      • feat: update API to 57.0 #1
      • +
      • Bump github/codeql-action from 1 to 2 #59
      • +
      • Fix assigned to field #60
      • +
      • Archived flag, dependent task fixes, SOQL optimization #58
      • +
      • Cosmetic rearrangements, apexdoc #55
      • +
      • 4.3.0 Queues, Child Objects #53
      • +
      • Version 4.3.0 pt 2 #47
      • +
      • Version 4.3.0 #44
      • +
      • Codecov to v3 #41
      -

      4.2.1 - 2022-05-25

      +

      Commits

      +
        +
      • build(npm): update package dependencies e40b10a
      • +
      • lightning lookup w/o API v1 e8dac8e
      • +
      • docs(ApexDox): rerun ApexDox bc720e2
      • +
      • docs(ApexDox): include Installation & Changelog 4910af9
      • +
      • feat(docs): ApexDox version upgrade 178e1ce
      • +
      • build: move tests folder into classes 99d78d5
      • +
      • Tests use Assert class 59d6ef2
      • +
      • build(sfdx): change sfdx to sf commands 994b3f2
      • +
      • revert(API): use 56.0 to avoid GVS bug 6eb588a
      • +
      • feat: finish Professional Edition template lookup 415fdcf
      • +
      • docs: update CanTheUser comments 22ea89c
      • +
      • API 56.0 4303659
      • +
      • fix: page redirect on template from object 70f43ba
      • +
      • feat(sfdx): update sfdx to sf f360666
      • +
      • fix: remove unnecessary jsencode 96070b1
      • +
      • fix: redirect on template choice for records 8bf011b
      • +
      • Deploy rules & scripts 5b80488
      • +
      • APTemplate lookup actions d34eaaf
      • +
      • fix(docs): update ApexDox e8481e8
      • +
      • ci(codeQL): delete codeQL d/t IP address fa066cf
      • +
      • dependabot auto-merge b5e5d4f
      • +
      • docs: cleanup code, document variables f27e8dc
      • +
      • feat: Update tests to use Assert class 2069b97
      • +
      • fix(build): Update plugin dependencies 4bf530c
      • +
      • Update scratch org definition files 851171c
      • +
      • chore: Scratch org shape updates fbe390e
      • +
      • docs(Apex): test comments 5056ebc
      • +
      • ci: update PR sfdx to sf, npm installation 77fa739
      • +
      • build(changelog): instructions & tag prefix 0ae955b
      • +
      • Beta 4.3.0-9 d4b477c
      • +
      • fix(sfdx): sf apex test correct config 6a030e4
      • +
      • feat: sfdx-scanner config 42c6889
      • +
      • docs(README): add image descriptions 2b9f999
      • +
      • Dependabot alerts dea7b92
      • +
      • Bug Report Template acfda0a
      • +
      • Bug template 516f70c
      • +
      • build(pmd): remove updatepmd 0ef9783
      • +
      • feat(scripts): update latest jQuery 992988e
      • +
      • fix(lookup): escape=false for record name 5fae8c0
      • +
      • Changelog 6516aa9
      • +
      +

      4.2.1 - 2022-05-25

      Merged

        -
      • Version 4.2.1 #37
      • -
      • Namespace to sample code #36
      • -
      • v4.2.0 #30
      • +
      • Version 4.2.1 #37
      • +
      • Namespace to sample code #36
      • +
      • v4.2.0 #30

      Fixed

        -
      • Version 4.2.1 (#37) #35 #34
      • -
      • Namespace to sample code (#36) #35
      • +
      • Version 4.2.1 (#37) #35 #34
      • +
      • Namespace to sample code (#36) #35
      -

      4.2.0 - 2022-04-01

      +

      Commits

      + +

      4.2.0 - 2022-04-01

      Merged

        -
      • Specify Action Plan Name in Invocable Apex #27
      • -
      • Prettier, JS fixing #26
      • -
      • Highlight.js to 11.5 #25
      • -
      • Add changelog #24
      • -
      • Bump minimist from 1.2.5 to 1.2.6 #23
      • -
      • Upgrading Instructions #22
      • -
      • Add Codecov #21
      • +
      • Specify Action Plan Name in Invocable Apex #27
      • +
      • Prettier, JS fixing #26
      • +
      • Highlight.js to 11.5 #25
      • +
      • Add changelog #24
      • +
      • Bump minimist from 1.2.5 to 1.2.6 #23
      • +
      • Upgrading Instructions #22
      • +
      • Add Codecov #21
      • +
      +

      Commits

      +
        +
      • ApexDox remove unused modifiers 3b321db
      • +
      • Create codeql-analysis.yml 2822bc5
      • +
      • Highlight inline code security update 57662e7
      • +
      • Pull Request workflow update 2c84f4d
      • +
      • Update and rename CONTRIBUTION.md to CONTRIBUTING.md cb7f3c1
      • +
      • update Prettierignore 37aeafa
      • +
      • Add link to Apex documentation 96f9cde
      • +
      • Sample template update 4c957ca
      • +
      • Update CONTRIBUTING.md 9e3b175
      • +
      • Add AppExchange listing to README 760dfc9
      • +
      • Sample flow update 397b763
      -

      4.1.0 - 2022-03-17

      +

      4.1.0 - 2022-03-17

      Merged

        -
      • Release Ready #19
      • -
      • Pre-Release (beta15) #18
      • -
      • Pre-Commit ApexDox cleanup #16
      • -
      • Scripts, Cleanup, New Build #15
      • +
      • Release Ready #19
      • +
      • Pre-Release (beta15) #18
      • +
      • Pre-Commit ApexDox cleanup #16
      • +
      • Scripts, Cleanup, New Build #15
      • +
      +

      Commits

      +

      4.0.0-9 - 2022-02-23

      Merged

        -
      • AP Task AssignedTo field cleanup #14
      • -
      • Managed vs Unmanaged Project Config #13
      • -
      • Permissions Updates #12
      • -
      • Remove tests from ApexDox #10
      • -
      • Security, code coverage, Print page, Spring 22! #7
      • -
      • Code and documentation cleanup #6
      • -
      • PMD-suggested cleanup #5
      • -
      • Rename Template Task #4
      • -
      • Version 4.0.0.7 #3
      • -
      • Code comment cleanup #2
      • -
      • ApexDocs, Project Files, PMD rules #1
      • +
      • AP Task AssignedTo field cleanup #14
      • +
      • Managed vs Unmanaged Project Config #13
      • +
      • Permissions Updates #12
      • +
      • Remove tests from ApexDox #10
      • +
      • Security, code coverage, Print page, Spring 22! #7
      • +
      • Code and documentation cleanup #6
      • +
      • PMD-suggested cleanup #5
      • +
      • Rename Template Task #4
      • +
      • Version 4.0.0.7 #3
      • +
      • Code comment cleanup #2
      • +
      • ApexDocs, Project Files, PMD rules #1
      • +
      +

      Commits

      +
        +
      • Documentation with ApexDox 236c66b
      • +
      • Iniital commit, updated for namespace f4d7498
      • +
      • migrate to new sfdx-falcon directory 0cde1dc
      • +
      • move to sfdx-source falcon directory structure 2edf46d
      • +
      • package files 16c26fc
      • +
      • Prettier first pass 9467195
      • +
      • ApexDox 1fc534b
      • +
      • ApexDox 48589f7
      • +
      • First commit - ReadMe & Installation 406674a
      • +
      • package files 45278ca
      • +
      • Install/update prettier 62fd10a
      • +
      • Exclude unmanaged and unpackaged metadata 32bcb00
      • +
      • Unmanaged metadata for managed installation ed24492
      • +
      • Remove non-dev org actions 29208d8
      • +
      • Install script for custom setting 11e6b5d
      • +
      • Update for EE orgs 83e459d
      • +
      • Fix lookup for portal users, custom setting DML dc6ea13
      • +
      • Support unmanaged metadata f8681e8
      • +
      • Add gitignore 433c579
      • +
      • Documentation and support files 9993d83
      • +
      • ApexDox c5c3144
      • +
      • Simplify Account layout 536459a
      • +
      • ApexDox 2662ae8
      • +
      • Create first package version 53b252f
      • +
      • Org metadata and ignore files 0725de0
      • +
      • Removed TradeStyle to allow installation in regular orgs fa17e9d
      • +
      • Handle ID lists b07c6a7
      • +
      • Works in managed package with unmanaged objects ef595b4
      • +
      • Simplify installation instructions bdb2de3
      • +
      • Readme update, ignore record types 1412184
      • +
      • Fix fieldset test visibility bug 644087e
      • +
      • Class and method accessibility 7515c2a
      • +
      • Remove debugs 07e4ee7
      • +
      • Release version 4.0.0-6 3f7a3fa
      • +
      • Script for working with custom object invocable 9fe7c54
      • +
      • Create custom setting on install c3f795c
      • +
      • New task layout c31ec9f
      • +
      • Unprotect custom metadata so users can edit f947d4b
      • +
      • Beta 3 19ace7e
      • +
      • ApexDox 0076c54
      diff --git a/docs/ActionPlanCreateInvocable.html b/docs/ActionPlanCreateInvocable.html index 7b37e709..616545e2 100644 --- a/docs/ActionPlanCreateInvocable.html +++ b/docs/ActionPlanCreateInvocable.html @@ -35,7 +35,11 @@ @@ -46,10 +50,10 @@ @@ -60,7 +64,7 @@ @@ -71,7 +75,7 @@ @@ -85,111 +89,115 @@ - - - -
    @@ -203,11 +211,11 @@
  • - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@

    The File or Document Id for display on the Visualforce confirmation page - + @@ -46,10 +50,10 @@ @@ -60,7 +64,7 @@ @@ -71,7 +75,7 @@ @@ -85,111 +89,115 @@ - - - - @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@
    @@ -422,11 +450,13 @@

    rel="noopener noreferrer" title="Go to source" class="source-link" - href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls#L42"> + href="https://github.com/SalesforceLabs/ActionPlansV4/blob/main/sfdx-source/LabsActionPlans/main/default/classes/ActionPlansQueueableBuilder.cls#L44"> execute(qc)

    -
    Instead of a batch, we use queuable because it's more simple than Batch Apex
    +
    + Instead of a batch, we use queuable because it's more simple than Batch Apex
    TODO: Change email error notification to Lightning notification +
    Signature
    public void execute(QueueableContext qc)
    diff --git a/docs/ActionPlansQueueableBuilderTest.html b/docs/ActionPlansQueueableBuilderTest.html index b5b18784..91696df7 100644 --- a/docs/ActionPlansQueueableBuilderTest.html +++ b/docs/ActionPlansQueueableBuilderTest.html @@ -35,7 +35,11 @@ @@ -46,10 +50,10 @@ @@ -60,7 +64,7 @@ @@ -71,7 +75,7 @@ @@ -85,111 +89,115 @@ - - - - @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@
    -

    +

    - getRecords(queryText) + queryRecords(queryText)

    @@ -499,7 +541,7 @@

    Signature
    @RemoteAction
    -
    public static List<SObject> getRecords(String queryText)
    +
    public static List<SObject> queryRecords(String queryText)
    Parameters
    queryText
    Type: String
    @@ -511,28 +553,6 @@

    ActionPlanCreationController

    -
    -

    - - isCustom(sObjectName) - -

    -
    Given an object name, return if it is a custom object
    -
    Signature
    - -
    private Boolean isCustom(String sObjectName)
    -
    Parameters
    -
    sObjectName
    -
    Type: String
    -
    The name of the SObject
    -
    Returns
    -
    Boolean Is this object a custom object?
    -

    @@ -46,10 +50,10 @@ @@ -60,7 +64,7 @@ @@ -71,7 +75,7 @@ @@ -85,111 +89,115 @@ - - - - @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@

    Used in testing - we force an Error during tests - + ActionPlansTestUtilities Properties Used during testing to "fool" the org into thinking that it has Task record types - + @@ -46,10 +50,10 @@ @@ -60,7 +64,7 @@ @@ -71,7 +75,7 @@ @@ -85,111 +89,115 @@ - - - - @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@
      - - - diff --git a/docs/assets/search-idx.js b/docs/assets/search-idx.js index 9cca9e89..6d54f3da 100644 --- a/docs/assets/search-idx.js +++ b/docs/assets/search-idx.js @@ -2,17 +2,17 @@ export default [ { "title": "Home", "fileName": "index.html", - "text": "Home Action Plans Changelog Action Plans Installation and Setup Please follow installation instructions, shown on the Installation page AppExchange - Recommended AppExchange Listing Post-intall extras Scratch Org Developer Edition / Sandbox Apex Code Documentation About Action Plans Action Plans helps your organization encapsulate best practices into easily sharable, reusable task templates. You can create Action Plans for the following objects: Accounts Contacts Leads Opportunities Campaigns Contracts Cases Person Accounts Custom Objects Getting Help Action Plans is unsupported. For community assistance with Action Plans, please visit Salesforce Trailblazer Community . To submit ideas or issues, please visit Action Plans on Github . Community Action Plans is open source software. We welcome your issue reports, ideas, documentation, code tweaks and all other participation. Learn more . Features: Export and share your Action Plan Templates with other orgs. Import Action Plan Templates. Supports Task reminder times. Action Plans Settings controls behavior around Chatter Notifications, actions when a Lead is converted, and default Task assignment behavior Invocable Apex allows automatic Action Plan creation from a Template in Process Builder and Flow Post Install Configuration Getting started is easy. For each object, you need to add a button to the list view, add a button to the detail page. For Accounts, follow these steps:\" Update Action Plans Custom Settings Change these setting by editing Action Plan Settings, and updating values at either the organization level, profile levels, or user levels. Navigate to Setup > Develop > Custom Settings. Click on 'Manage' next to Action Plans Settings . Click the 'New' button near 'Default Organizational Level Value'. Check the values that you want to enable. Enable Chatter Post places a post in the related record's Chatter Feed(if Chatter is enabled for that object). If unchecked, Action Plans does not create a Feed Post. Unassigned Task Defaults to Record Owner ensures that Action Plan Template tasks with a blank 'Assigned To' field go to the related record's owner. If unchecked, tasks with a blank 'Assigned To' field are assigned to the running user. Tasks can be assigned to specific people on Action Plan Templates, which overrides this setting. Default Object on Lead Conversion specifies that if an Action Plan is related to a Lead, whether the Action Plan should be moved to the converted Account, Contact, or Opportunity when the Lead is converted. The default is Contact. Action Plans Business Hours ID and Use Business Hours are reserved for future functionality. Weekends: Custom Metadata Modify Custom Metadata Weekend Day to indicate which days of the week are the weekend and how many days to move a task forward or backwards to move it to the end of the previous week or the start of the next week. This allows you to work with a different weekend, or to avoid assigning any task to be due on any specific day of the week.All weekdays should have 0 in both numeric fields. Update Your Page & Search Layout Configurations Create Action Plans Buttons For each object, you need to add a button to the list view, For Accounts, follow these steps: Navigate to Setup > Object Manager > Account > Search Layouts for Salesforce Classic Click on \"Edit\" from the menu near \"List View.\" Move the \"Create Account Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Navigate to Setup > Object Manager > Account > Page Layouts. Note: the package includes a default \"Action Plan Layout\" for your reference. You do not need to use it. Click on \"Edit\" near one of your standard Account Page Layouts. Add \"Action Plans\" related list to the page. Edit the properties of the related list by clicking the configuration button above it. Expand \"Buttons\" section, clear the \"New\" checkbox and move \"Create Account Action Plan\" to the Selected buttons. Update the fields in the related list to meet your needs. Recommended fields include Start Date, Action Plan Status, Action Plan Template, Plan Start Date. Click \"Save.\" Repeat these steps for the other standard objects Action Plans supports: Contacts, Leads, Opportunities, etc. Delete Action Plans Buttons Follow this steps for Action Plan Object: Navigate to Setup > Object Manager > Action Plan > Search Layouts. Click on \"Edit\" near \"List View.\" Move the \"Delete Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Task Layout Optionally, add the \"Action Plan Task\" field to your Task page layout, but it should be Read-Only , as clearing this field will break the ability to track Action Plan progress. Security Update Your Org-Wide Default Sharing Settings Action Plans includes two shareable objects: Action Plan and Action Plan Template . You may configure your sharing settings in whatever way works for your organization. If you want anyone to be able to create and see plans and their templates, use Public Read/Write for Action Plan and Action Plan Template. If you want anyone to be able to see Action Plans and Templates without being able to change them, select \"Public Read Only.\" If your Org-Wide Default sharing settings are set to Private for Action Plan or Action Plan Template, you may need to implement custom automation to share Action Plan records with the appropriate people. You may do this via Apex sharing, or you may use other automation, to assign ownership of the Action Plan itself to the related record owner or any desired user. To use Action Plans, most users require access only to Tasks . They can be assigned Tasks without knowing that these Tasks are part of an Action Plan. Any changes they make to a Task's Status will be reflected in the related Action Plan Task Template record automatically. No Permission Set is required. Use Permission Sets For Security Assign the appropriate Permission Set(s) to each user who will need to use Action Plans: Action Plans Admin: Full permissions for Action Plans, Action Plan Templates, AP Tasks and APT Task Templates. Action Plans Template Creator: Full permissions for Action Plan Templates and AP Template Tasks. No Action Plan access. Action Plans Creator: Read, Create, Edit, Delete for Action Plans and AP Tasks. Read-only for Action Plan Templates and APT Task Templates. Action Plans Import/Export: Access to export and import Action Plan Template records. View the appropriate button for export and tab for import. Action Plans User: Read-only for Action Plans and AP Tasks. Edit permission for Tasks should be provided via the user's profile or other permission sets. Uses for each Permission Set: Some users may require visibility into the Action Plans related to those Tasks. These users need the Action Plans User  Permission Set. It gives Read-only access to Action Plan. Some users may need to create Action Plans from Templates but not edit the templates themselves. The Action Plans Creator  Permission Set gives read-only access to Action Plan Templates, and Read, Create, Edit, and Delete access to Action Plans. Users who can create and edit Action Plan Templates require the Action Plans Template Creator  Permission Set. This includes permission to Read, Create, Edit, and Delete all Action Plan Templates only. It does not include any Action Plan or Task permissions. If these users require Action Plan access, other Permission Sets should be used as well. A custom permission allows exporting of Action Plan Templates. Intended as an add-on for Action Plans Template Creator , the Action Plans Import/Export permission set allows the viewing of the Export button on Template detail pages and to the Import tab. The custom permission Action Plan Template Export allows exporting of Action Plan Templates and associated tasks. Use this permission with care, as it is a potential security hole for your org's proprietary templates. This is a great way to move templates from a Sandbox to Production org. Action Plans Admin  includes Modify All permissions for all four Action Plan objects(Action Plan, Action Plan Task Template, Action Plan Template, and Action Plan Template Task Template). The custom permission allows exporting Action Plan Templates. Note: The Apex used in Flows or via triggers does not require special permissions to run. Using Action Plans with Custom Objects Start Using an Object with Action Plans Create the object and be sure to check \"Track Activities\" for the object attrributes Create a lookup field from Action Plan to the object. Name the field the same as the object name. The field label can be anything. As an example, if you have a custom object named MyObject__c , you must name the field on Action Plan MyObject__c Add the field to the Related Objects fieldset on Action Plan. The related object will now be available for selection when creating a new Action Plan and relating it to an object. Add the following code to the object trigger in before delete and after undelete contexts(removing the LabsActionPlans namespace if you're not using the managed package):LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' ); Test Code for Additional Objects Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage(not a best-practice!) just make a test method inserting and then deleting a record.Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet. Adding a Create Custom Object Action Plan button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template.(Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link Give it a label and name, such as \"New MyObject Action Plan\" Display Type is List Button. Uncheck the list checkbox. Use the following format for the button(removing the LabsActionPlans__ namespace if you're not using the managed package):{!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType=\"CustomObject__c\", refId=CustomObject__c.Id] )} Be sure to remove the standard New button on the Action Plans related list and use this button instead. Create Action Plans for multiple Custom Object records Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: Then create a list view button for that object and add it to your list views. To Stop Using an Object with Action Plans If you want, for example, not to allow relating Action Plans to Contracts, remove the Contract field from the Action Plan Related Objects fieldset.There is no need to delete the field from the Action Plan object. Create a Template Now you're ready to create your first template. Navigate to the Action Plans Templates tab. Click on the \"New Action Plan Template\" button. The template screen looks like this: Name - Template Name. Description - An explanation of how the template should be used. Skip Weekends - Allows you to automatically reschedule a task that would fall on a weekend to either the day before or day after the weekend. When checked, a picklist appears, allowing you to select before or after the weekend. Action - Click \"X\" to eliminate a step in a template. Subject - What the task is to do. Task Dependency - The dependent task will only be created once the controlling task is completed. Days After- This value determines the due date of the task. For tasks with no dependency, the task's due date will be offset from the plan start date. For tasks with a dependency, the due date will be offset from the expected due date of the task on which it depends. Assigned To - Looks up to user. Leave blank if you want to assign the task dynamically.When assigning dynamically, the default behavior will be to assign the task to the running user. You can also have the system assign it to the record owner by changing your Action Plan Settings. See \"Post Install Configuration\" guide above. Category - What type of activity. Priority - Taken from Task priorities and Record Type(if applicable). Email - Send a standard New Task email when checked. For Tasks depending on others, the email will be sent when the task is created. Reminder - This check box will define the default behaviour for reminders when applying the template to create an Action plan . If it's left unchecked, in the Action Plan Creation page the reminders will be initially disabled If it's checked the reminders will be available. User Reminder settings: Go Personal Setup > My Personal Information > Reminders, if the option \"By default, set reminder on Tasks to:\" is checked then the selected time will be the default option for task template reminders. User setting for Activity Object : Go App Setup> Feature Settings > Sales > Activity Settings, If \"Enable Activity Reminders\" is not checked, then reminders column will not be displayed in the Action Plan creation page. Comments - Comments supporting a task. Add New Task - Adds an additional row to the tasks grid. Save - Saves the template. Task Record Types If your org uses Task Record Types, you must specify which Record Type to use for all Tasks from each Action Plan and Template record. This will affect the Status values available for each related Action Plan Task. This cannot be changed once an Action Plan or Template is created. Only one record type may be specified for all the Tasks on that Action Plan or Template. Create Action Plans for Several Accounts Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the \"Create Account Action Plans\" button. Select the template you want to use by typing the name on the lookup and clicking on it. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. Save the Action Plan. Note: Action Plan creation is handled by a queueable(asynchronous) process. It can take a couple of minutes to be able to view all created records. Verify the Action Plan and the tasks. Complete the first task on the Action Plan. Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete.(A Contact related list is shown here, but this applies equally to Accounts.) Task notifications for Flow-created Action Plans User Settings To receive Task notifications if Send Email is selected on an Action Plan Task, ensure that users have been allowed to control receipt of Task notification emails(this is active by default), and that they have allowed email notifications to be sent(this is also enabled by default). See Salesforce H&T for more information. Org Setting The Send Email field on Action Plan Task must be checked to send a email notifications, and the setting Allow Flow to send delegated task notifications on records created through Apex must also be enabled. Go to Settings > Feature Settings > Sales > Activity Settings to check that box and allow email notifications to be sent via Flow-created Action Plans. Action Plan Tasks If the user has enabled task notification, then those will be sent when an Action Plan Task is created. If the Action Plan Task is updated to a new owner, and if the Send Email box is NOT checked, the user may still receive a task notification if that is in their personal settings. If the box is checked, assuming that notifications are enabled for that user, the email will be sent. Queues Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the created Tasks(which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. Automate Action Plan Creation Flow Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.Days from trigger to start Action Plan is optional(and defaults to 0). The first task will be due the number of days(specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. (Optional) Sample Action Plan Template for Account onboarding Run the following: sfdx force:apex:execute -f ./data/sample-data.apex To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow Create an Account and set Type to any value that starts with 'Customer' Process Builder It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans. It is also recommended NOT to use Process Builder at all! Apex To call the invocable Apex from a Trigger or Apex class, adapt the following sample code: UNMANAGED CODE String apTemplateName; ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ ActionPlanCreateInvocable.CreateActionPlanRequest req = new ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplate.Id; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 0; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); MANAGED PACKAGE String apTemplateName; LabsActionPlans__ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest req = new LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplateName; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 1; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = LabsActionPlans.ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); ActionPlanCreateInvocable.CreateActionPlanRequest class Variables: String templateNameOrID (required) Name is not unique, so ID is preferred Id relatedRecordID (required) Must have a relationship field named the related record object name from Action Plan object Integer daysToActionPlanStart (not required) Defaults to 0, the day the plan is created String actionPlanName (not required) Give the Action Plan a custom name. If not specified, defaults to {Template Name} - {Parent Record Name}. Share Your Templates and Discover Best Practices using Template Export and Template Import Action Plans supports the sharing and discovery of best practices using Template Export and Template Import. How to Share Your Template Export is simple. Navigate to the Template you wish to export. Click on the \"Export\" button. Export creates a simple XML file containing template header and task information. It also includes information about who created the template.Note: It does not include user information or sensitive data about what objects you might use this template with. If you are using Lightning Experience, the exported file is in your Files tab, in your private files library. If you are still using Salesforce Classic, it is in your Documents tab, in your private documents folder. Sharing the file is easy. Email the file to whomever you want to share it with. Do you want to share it with a broader audience? Email the file to Salesforce Labs at labs@salesforce.com . Best Practices: How to Import Import is also simple. Navigate to the \"Import Template\" tab. Select the file you want to import using \"Browse\" and once you've found it click on \"Import Template.\" (Optional) Sample Action Plan Template Import This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder." + "text": "Home Action Plans Changelog Action Plans Installation and Setup Please follow installation instructions, shown on the Installation page AppExchange - Recommended AppExchange Listing Post-intall extras Scratch Org Developer Edition / Sandbox Apex Code Documentation About Action Plans Action Plans helps your organization encapsulate best practices into easily sharable, reusable task templates. You can create Action Plans for the following objects: Accounts Contacts Leads Opportunities Campaigns Contracts Cases Person Accounts Custom Objects Getting Help Action Plans is unsupported. For community assistance with Action Plans, please visit Salesforce Trailblazer Community . To submit ideas or issues, please visit Action Plans on Github . Community Action Plans is open source software. We welcome your issue reports, ideas, documentation, code tweaks and all other participation. Learn more . Features: Export and share your Action Plan Templates with other orgs. Import Action Plan Templates. Supports Task reminder times. Action Plans Settings controls behavior around Chatter Notifications, actions when a Lead is converted, and default Task assignment behavior Invocable Apex allows automatic Action Plan creation from a Template in Process Builder and Flow Post Install Configuration Getting started is easy. For each object, you need to add a button to the list view, add a button to the detail page. For Accounts, follow these steps:\" Update Action Plans Custom Settings Change these setting by editing Action Plan Settings, and updating values at either the organization level, profile levels, or user levels. Navigate to Setup > Develop > Custom Settings. Click on 'Manage' next to Action Plans Settings . Click the 'New' button near 'Default Organizational Level Value'. Check the values that you want to enable. Enable Chatter Post places a post in the related record's Chatter Feed(if Chatter is enabled for that object). If unchecked, Action Plans does not create a Feed Post. Unassigned Task Defaults to Record Owner ensures that Action Plan Template tasks with a blank 'Assigned To' field go to the related record's owner. If unchecked, tasks with a blank 'Assigned To' field are assigned to the running user. Tasks can be assigned to specific people on Action Plan Templates, which overrides this setting. Default Object on Lead Conversion specifies that if an Action Plan is related to a Lead, whether the Action Plan should be moved to the converted Account, Contact, or Opportunity when the Lead is converted. The default is Contact. Action Plans Business Hours ID and Use Business Hours are reserved for future functionality. Weekends: Custom Metadata Modify Custom Metadata Weekend Day to indicate which days of the week are the weekend and how many days to move a task forward or backwards to move it to the end of the previous week or the start of the next week. This allows you to work with a different weekend, or to avoid assigning any task to be due on any specific day of the week.All weekdays should have 0 in both numeric fields. Update Your Page & Search Layout Configurations Create Action Plans Buttons For each object, you need to add a button to the list view, For Accounts, follow these steps: Navigate to Setup > Object Manager > Account > Search Layouts for Salesforce Classic Click on \"Edit\" from the menu near \"List View.\" Move the \"Create Account Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Navigate to Setup > Object Manager > Account > Page Layouts. Note: the package includes a default \"Action Plan Layout\" for your reference. You do not need to use it. Click on \"Edit\" near one of your standard Account Page Layouts. Add \"Action Plans\" related list to the page. Edit the properties of the related list by clicking the configuration button above it. Expand \"Buttons\" section, clear the \"New\" checkbox and move \"Create Account Action Plan\" to the Selected buttons. Update the fields in the related list to meet your needs. Recommended fields include Start Date, Action Plan Status, Action Plan Template, Plan Start Date. Click \"Save.\" Repeat these steps for the other standard objects Action Plans supports: Contacts, Leads, Opportunities, etc. Delete Action Plans Buttons Follow this steps for Action Plan Object: Navigate to Setup > Object Manager > Action Plan > Search Layouts. Click on \"Edit\" near \"List View.\" Move the \"Delete Action Plans\" button from \"Available Buttons\" to \"Selected Buttons.\" Click \"Save.\" Task Layout Optionally, add the \"Action Plan Task\" field to your Task page layout, but it should be Read-Only , as clearing this field will break the ability to track Action Plan progress. Security Update Your Org-Wide Default Sharing Settings Action Plans includes two shareable objects: Action Plan and Action Plan Template . You may configure your sharing settings in whatever way works for your organization. If you want anyone to be able to create and see plans and their templates, use Public Read/Write for Action Plan and Action Plan Template. If you want anyone to be able to see Action Plans and Templates without being able to change them, select \"Public Read Only.\" If your Org-Wide Default sharing settings are set to Private for Action Plan or Action Plan Template, you may need to implement custom automation to share Action Plan records with the appropriate people. You may do this via Apex sharing, or you may use other automation, to assign ownership of the Action Plan itself to the related record owner or any desired user. To use Action Plans, most users require access only to Tasks . They can be assigned Tasks without knowing that these Tasks are part of an Action Plan. Any changes they make to a Task's Status will be reflected in the related Action Plan Task Template record automatically. No Permission Set is required. Use Permission Sets For Security Assign the appropriate Permission Set(s) to each user who will need to use Action Plans: Action Plans Admin: Full permissions for Action Plans, Action Plan Templates, AP Tasks and APT Task Templates. Action Plans Template Creator: Full permissions for Action Plan Templates and AP Template Tasks. No Action Plan access. Action Plans Creator: Read, Create, Edit, Delete for Action Plans and AP Tasks. Read-only for Action Plan Templates and APT Task Templates. Action Plans Import/Export: Access to export and import Action Plan Template records. View the appropriate button for export and tab for import. Action Plans User: Read-only for Action Plans and AP Tasks. Edit permission for Tasks should be provided via the user's profile or other permission sets. Uses for each Permission Set: Some users may require visibility into the Action Plans related to those Tasks. These users need the Action Plans User  Permission Set. It gives Read-only access to Action Plan. Some users may need to create Action Plans from Templates but not edit the templates themselves. The Action Plans Creator  Permission Set gives read-only access to Action Plan Templates, and Read, Create, Edit, and Delete access to Action Plans. Users who can create and edit Action Plan Templates require the Action Plans Template Creator  Permission Set. This includes permission to Read, Create, Edit, and Delete all Action Plan Templates only. It does not include any Action Plan or Task permissions. If these users require Action Plan access, other Permission Sets should be used as well. A custom permission allows exporting of Action Plan Templates. Intended as an add-on for Action Plans Template Creator , the Action Plans Import/Export permission set allows the viewing of the Export button on Template detail pages and to the Import tab. The custom permission Action Plan Template Export allows exporting of Action Plan Templates and associated tasks. Use this permission with care, as it is a potential security hole for your org's proprietary templates. This is a great way to move templates from a Sandbox to Production org. Action Plans Admin  includes Modify All permissions for all four Action Plan objects(Action Plan, Action Plan Task Template, Action Plan Template, and Action Plan Template Task Template). The custom permission allows exporting Action Plan Templates. Note: The Apex used in Flows or via triggers does not require special permissions to run. Using Action Plans with Custom Objects Start Using an Object with Action Plans Create the object and be sure to check \"Track Activities\" for the object attrributes Create a lookup field from Action Plan to the object. Name the field the same as the object name. The field label can be anything. As an example, if you have a custom object named MyObject__c , you must name the field on Action Plan MyObject__c Add the field to the Related Objects fieldset on Action Plan. The related object will now be available for selection when creating a new Action Plan and relating it to an object. Add the following code to the object trigger in before delete and after undelete contexts(removing the LabsActionPlans namespace if you're not using the managed package):LabsActionPlans.ActionPlansTriggerHandlers.actionPlansSObjectTriggerHandler( 'CustomObject__c' ); Test Code for Additional Objects Don't forget to write a test class to cover the custom object trigger. If you're just going for coverage(not a best-practice!) just make a test method inserting and then deleting a record.Unfortunately, the code in this package does not lend itself to easy creation of an Action Plan for a custom object... yet. Adding a Create Custom Object Action Plan button to the Action Plan object While Action Plans already overrides the New Action Plan action, the New button will show a new Action Plan screen, but will not allow adding an existing template.(Perhaps this will be in a future release... safe harbor.) Create a custom button with the following format on the Action Plan object and add it to the related list on the custom object page layout: Navigate to Setup > Object Manager > Action Plan > Buttons, Links, and Actions > New Button or Link Give it a label and name, such as \"New MyObject Action Plan\" Display Type is List Button. Uncheck the list checkbox. Use the following format for the button(removing the LabsActionPlans__ namespace if you're not using the managed package):{!URLFOR( $Action.LabsActionPlans__ActionPlan__c.New, null, [refType=\"CustomObject__c\", refId=CustomObject__c.Id] )} Be sure to remove the standard New button on the Action Plans related list and use this button instead. Create Action Plans for multiple Custom Object records Just as there is a button for Account list views to create multiple Action Plans, you can do the same for your custom object. Create a Visualforce page with the following code: Then create a list view button for that object and add it to your list views. To Stop Using an Object with Action Plans If you want, for example, not to allow relating Action Plans to Contracts, remove the Contract field from the Action Plan Related Objects fieldset.There is no need to delete the field from the Action Plan object. Create a Template Now you're ready to create your first template. Navigate to the Action Plans Templates tab. Click on the \"New Action Plan Template\" button. The template screen looks like this: Name - Template Name. Description - An explanation of how the template should be used. Skip Weekends - Allows you to automatically reschedule a task that would fall on a weekend to either the day before or day after the weekend. When checked, a picklist appears, allowing you to select before or after the weekend. Action - Click \"X\" to eliminate a step in a template. Subject - What the task is to do. Task Dependency - The dependent task will only be created once the controlling task is completed. Days After- This value determines the due date of the task. For tasks with no dependency, the task's due date will be offset from the plan start date. For tasks with a dependency, the due date will be offset from the expected due date of the task on which it depends. Assigned To - Looks up to user. Leave blank if you want to assign the task dynamically.When assigning dynamically, the default behavior will be to assign the task to the running user. You can also have the system assign it to the record owner by changing your Action Plan Settings. See \"Post Install Configuration\" guide above. Category - What type of activity. Priority - Taken from Task priorities and Record Type(if applicable). Email - Send a standard New Task email when checked. For Tasks depending on others, the email will be sent when the task is created. Reminder - This check box will define the default behaviour for reminders when applying the template to create an Action plan . If it's left unchecked, in the Action Plan Creation page the reminders will be initially disabled If it's checked the reminders will be available. User Reminder settings: Go Personal Setup > My Personal Information > Reminders, if the option \"By default, set reminder on Tasks to:\" is checked then the selected time will be the default option for task template reminders. User setting for Activity Object : Go App Setup> Feature Settings > Sales > Activity Settings, If \"Enable Activity Reminders\" is not checked, then reminders column will not be displayed in the Action Plan creation page. Comments - Comments supporting a task. Add New Task - Adds an additional row to the tasks grid. Save - Saves the template. Task Record Types If your org uses Task Record Types, you must specify which Record Type to use for all Tasks from each Action Plan and Template record. This will affect the Status values available for each related Action Plan Task. This cannot be changed once an Action Plan or Template is created. Only one record type may be specified for all the Tasks on that Action Plan or Template. Create Action Plans for Several Accounts Navigate to an Accounts list view. Select the Accounts for which you want to create Action Plans. Click on the \"Create Account Action Plans\" button. Select the template you want to use by typing the name on the lookup and clicking on it. Enter the information specific to this plan. Note that the Accounts you selected earlier are visible. Save the Action Plan. Note: Action Plan creation is handled by a queueable(asynchronous) process. It can take a couple of minutes to be able to view all created records. Verify the Action Plan and the tasks. Complete the first task on the Action Plan. Note that the Action Plan is now in the correct related list and that this Account has one open activity and one closed activity. The third activity in the template is dependent and will be created only when its controlling task is complete.(A Contact related list is shown here, but this applies equally to Accounts.) Task notifications for Flow-created Action Plans User Settings To receive Task notifications if Send Email is selected on an Action Plan Task, ensure that users have been allowed to control receipt of Task notification emails(this is active by default), and that they have allowed email notifications to be sent(this is also enabled by default). See Salesforce H&T for more information. Org Setting The Send Email field on Action Plan Task must be checked to send a email notifications, and the setting Allow Flow to send delegated task notifications on records created through Apex must also be enabled. Go to Settings > Feature Settings > Sales > Activity Settings to check that box and allow email notifications to be sent via Flow-created Action Plans. Action Plan Tasks If the user has enabled task notification, then those will be sent when an Action Plan Task is created. If the Action Plan Task is updated to a new owner, and if the Send Email box is NOT checked, the user may still receive a task notification if that is in their personal settings. If the box is checked, assuming that notifications are enabled for that user, the email will be sent. Queues Action Plan Tasks cannot be assigned to queues, so if the parent record is owned by a queue, each AP Task will be assigned to the running user. Tasks generated from that Action Plan can be assigned to the queue by using a Flow to reassign the Tasks. Because the Invocable Apex returns a list of Action Plan Task IDs, the created Tasks(which have a relationship to the Action Plan tasks) can be updated in that same flow, as they are created synchronously and can be queried immediately. Alternatively, reassign Tasks to Queues any other way you'd like; it will not break Action Plans, and the Queue name will show on the Action Plan detail page. Automate Action Plan Creation Flow Action Plans includes an Invocable Apex class that can be included in a Flow. The Record ID of the triggering record is required, as is the Id OR the Name of the desired template.Days from trigger to start Action Plan is optional(and defaults to 0). The first task will be due the number of days(specified on the template) from the start date. This date may fall on a weekend, though task due dates can be moved to avoid weekends if set on the template. The Invocable Apex class returns the Salesforce IDs of all the created Action Plan Tasks, which can be used in the next Flow steps. (Optional) Sample Action Plan Template for Account onboarding Run the following: sf apex run --file ./data/sample-data.apex To use this Template with the included Flow, see the Create Action Plan From Template Apex Action in the New Customer Onboarding Activities Flow Create an Account and set Type to any value that starts with 'Customer' Process Builder It is recommended NOT to check the Recursion box when creating a Process Builder to work with Action Plans. It is also recommended NOT to use Process Builder at all! Apex To call the invocable Apex from a Trigger or Apex class, adapt the following sample code: UNMANAGED CODE String apTemplateName; ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ ActionPlanCreateInvocable.CreateActionPlanRequest req = new ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplate.Id; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 0; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); MANAGED PACKAGE String apTemplateName; LabsActionPlans__ActionPlanTemplate__c apTemplate; List toInsert... // can use any object, such as Account, or the generic SObject class List requests = new List(); for(SObject a : toInsert){ LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest req = new LabsActionPlans.ActionPlanCreateInvocable.CreateActionPlanRequest(); req.templateNameOrID = apTemplateName; req.relatedRecordID = a.Id; req.daysToActionPlanStart = 1; req.actionPlanName = a.Name + ' - Onboarding'; requests.add(req); } List resultIDs = LabsActionPlans.ActionPlanCreateInvocable.makeActionPlanFromTemplate(requests); ActionPlanCreateInvocable.CreateActionPlanRequest class Variables: String templateNameOrID (required) Name is not unique, so ID is preferred Id relatedRecordID (required) Must have a relationship field named the related record object name from Action Plan object Integer daysToActionPlanStart (not required) Defaults to 0, the day the plan is created String actionPlanName (not required) Give the Action Plan a custom name. If not specified, defaults to {Template Name} - {Parent Record Name}. Share Your Templates and Discover Best Practices using Template Export and Template Import Action Plans supports the sharing and discovery of best practices using Template Export and Template Import. How to Share Your Template Export is simple. Navigate to the Template you wish to export. Click on the \"Export\" button. Export creates a simple XML file containing template header and task information. It also includes information about who created the template.Note: It does not include user information or sensitive data about what objects you might use this template with. If you are using Lightning Experience, the exported file is in your Files tab, in your private files library. If you are still using Salesforce Classic, it is in your Documents tab, in your private documents folder. Sharing the file is easy. Email the file to whomever you want to share it with. Do you want to share it with a broader audience? Email the file to Salesforce Labs at labs@salesforce.com . Best Practices: How to Import Import is also simple. Navigate to the \"Import Template\" tab. Select the file you want to import using \"Browse\" and once you've found it click on \"Import Template.\" (Optional) Sample Action Plan Template Import This repository also includes sample Action Plan Template files, which you can import on the appropriate tab. You may download New Customer Onboarding or Trade Show Follow Up from GitHub, or you can find it in this SFDX project in the data folder." }, { "title": "installation", "fileName": "installation.html", - "text": "Action Plans Installation Follow these instructions to deploy Action Plans to your org. Deployment Methods AppExchange : The managed package is the best way to go - it will let you upgrade seamlessly as features are added. Installing the App Using a Scratch Org : Fast and easy way to work with this app in a scratch org Installing the app using a Developer Edition Org or a Sandbox : Useful when tackling Trailhead Badges or if you want the app deployed to a more permanent environment than a scratch org. Optional installation instructions : Installing sample Action Plan Template and other metadata AppExchange(Managed Package - RECOMMENDED) Action Plans : This is the best way to install the package, which you can easily upgrade as features are added. Installing the App using a Scratch Org Set up your environment. Follow the steps in the Quick Start: Lightning Web Components Trailhead project. The steps include: Enable Dev Hub in your Trailhead Playground or hub org Install Salesforce CLI Install Visual Studio Code Install the Visual Studio Code Salesforce extensions If you haven't already done so, authorize your hub org and provide it with an alias(myhuborg in the command below): sfdx auth:web:login -d -a myhuborg Clone this repository: git clone https://github.com/SalesforceLabs/ActionPlansV4 cd ActionPlansV4 From the terminal window, run the installation script npm run-script scratchorg or . scripts/scratchorg.sh That's it! Installing the App using a Developer Edition Org or your own Sandbox Org Follow this set of instructions if you want to deploy the app to a more permanent environment than a Scratch org.This includes non source-tracked orgs such as a free Developer Edition Org or a Trailhead Playground , or your own Sandbox. Start from a brand-new environment to avoid conflicts with previous work you may have done. Authorize your org and provide it with an alias(myorg in the command below): sfdx auth:web:login -s -a myorg Clone this repository: git clone https://github.com/SalesforceLabs/ActionPlansV4 cd ActionPlansV4 If you are setting up a Developer Edition: go to Setup , and under My Domain , register a My Domain . Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first. To run all the next steps at once, run this command in the terminal: . scripts/unmanaged.sh The org will open. That's it! Or run these steps one by one Run this command to deploy the app. sf deploy metadata --source-dir sfdx-source/LabsActionPlans Assign the Action_Plans_Admin permission set to the admin user. sf org assign permset --name Action_Plans_Admin (Optional) Load sample metadata (see below) sf deploy metadata --source-dir sfdx-source/unmanaged If your org isn't already open, open it now: sf org open --target-org myorg In App Launcher, select the Action Plans app. Optional Installation Instructions This repository contains several files that are relevant if you want to add sample data, or integrate modern web development tooling to your Salesforce development processes or to your continuous integration/continuous deployment processes. Data/Metadata Import(Optional - NOT available if using the AppExchange managed package) This repository creates sample data(Accounts, Contacts, Leads) if you choose to create a scratch org. To prevent this, go to the scratch org definition and change hasSampleData to false . \"hasSampleData\": false, To create a sample Action Plan Template for Account onboarding, run the following: sfdx force:apex:execute -f ./data/sample-data.apex To create a sample Flow that uses the sample template a sample Account layout a sample Task layout a sample report on open Action Plan-related Tasks sf deploy metadata --source-dir sfdx-source/unmanaged You can also create other sample Account and Contact records by running the following command: sf data import tree --plan ./data/action-plan-data-plan.json Data/Metadata Import(Optional - ONLY if using the AppExchange managed package) When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following: sfdx force:apex:execute -f ./data/sample-data-managed.apex To create a sample Flow that uses the sample template a sample Account layout a sample Task layout a sample report on open Action Plan-related Tasks sf deploy metadata --source-dir sfdx-source/unmanagedExtension You can also create other sample Account and Contact records by running the following command: sf data import tree --plan ./data/action-plan-data-plan.json Code formatting Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the Prettier formatter. Prettier Apex is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow these instructions from the Salesforce Extensions site. Pre-commit hook This repository also comes with a package.json file that makes it easy to set up a pre-commit hook that enforces code formatting by running Prettier every time you git commit changes. To set up the formatting pre-commit hook: Install Node.js if you haven't already done so Run npm install in your project's root folder to install the Husky and Prettier modules(Note: Mac users should verify that Xcode command line tools are installed before running this command.) Husky will now run Prettier automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. You can also run the formatting from the command line using the following command(check out package.json for the full list): npm run prettier" + "text": "Action Plans Installation Follow these instructions to deploy Action Plans to your org. Deployment Methods AppExchange : The managed package is the best way to go - it will let you upgrade seamlessly as features are added. Installing the App Using a Scratch Org : Fast and easy way to work with this app in a scratch org Installing the app using a Developer Edition Org or a Sandbox : Useful when tackling Trailhead Badges or if you want the app deployed to a more permanent environment than a scratch org. Optional installation instructions : Installing sample Action Plan Template and other metadata AppExchange(Managed Package - RECOMMENDED) Action Plans : This is the best way to install the package, which you can easily upgrade as features are added. Installing the App using a Scratch Org Set up your environment. Follow the steps in the Quick Start: Lightning Web Components Trailhead project. The steps include: Enable Dev Hub in your Trailhead Playground or hub org Install Salesforce CLI Install Visual Studio Code Install the Visual Studio Code Salesforce extensions If you haven't already done so, authorize your hub org and provide it with an alias(myhuborg in the command below): sf org login web --set-default --alias myhuborg Clone this repository: git clone https://github.com/SalesforceLabs/ActionPlansV4 cd ActionPlansV4 From the terminal window, run the installation script npm run scratchorg or . scripts/scratchorg.sh That's it! Installing the App using a Developer Edition Org or your own Sandbox Org Follow this set of instructions if you want to deploy the app to a more permanent environment than a Scratch org.This includes non source-tracked orgs such as a free Developer Edition Org or a Trailhead Playground , or your own Sandbox. Start from a brand-new environment to avoid conflicts with previous work you may have done. Authorize your org and provide it with an alias(myorg in the command below): sf org login web --set-default --alias myorg Clone this repository: git clone https://github.com/SalesforceLabs/ActionPlansV4 cd ActionPlansV4 If you are setting up a Developer Edition: go to Setup , and under My Domain , register a My Domain . Then ensure that enhanced domains are activated. You may need to enable Salesforce Edge network first. To run all the next steps at once, run this command in the terminal: . scripts/unmanaged.sh The org will open. That's it! Or run these steps one by one Run this command to deploy the app. sf deploy metadata --source-dir sfdx-source/LabsActionPlans Assign the Action_Plans_Admin permission set to the admin user. sf org assign permset --name Action_Plans_Admin (Optional) Load sample metadata (see below) sf deploy metadata --source-dir sfdx-source/unmanaged If your org isn't already open, open it now: sf org open --target-org myorg In App Launcher, select the Action Plans app. Optional Installation Instructions This repository contains several files that are relevant if you want to add sample data, or integrate modern web development tooling to your Salesforce development processes or to your continuous integration/continuous deployment processes. Data/Metadata Import(Optional - NOT available if using the AppExchange managed package) This repository creates sample data(Accounts, Contacts, Leads) if you choose to create a scratch org. To prevent this, go to the scratch org definition and change hasSampleData to false . \"hasSampleData\": false, To create a sample Action Plan Template for Account onboarding, run the following: sf apex run --file ./data/sample-data.apex To create a sample Flow that uses the sample template a sample Account layout a sample Task layout a sample report on open Action Plan-related Tasks sf deploy metadata --source-dir sfdx-source/unmanaged You can also create other sample Account and Contact records by running the following command: sf data import tree --plan ./data/action-plan-data-plan.json Data/Metadata Import(Optional - ONLY if using the AppExchange managed package) When FIRST installing the package, it will automatically create a sample Action Plan Template for Account onboarding. If you want to recreate it manually, run the following: sf apex run --file ./data/sample-data-managed.apex To create a sample Flow that uses the sample template a sample Account layout a sample Task layout a sample report on open Action Plan-related Tasks sf deploy metadata --source-dir sfdx-source/unmanagedExtension You can also create other sample Account and Contact records by running the following command: sf data import tree --plan ./data/action-plan-data-plan.json Code formatting Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. The .prettierignore and .prettierrc files are provided as part of this repository to control the behavior of the Prettier formatter. Prettier Apex is an extension that handles Apex-specific formatting and allows the removal of the extra line via the Prettier config file. To use it with Visual Studio Code, follow these instructions from the Salesforce Extensions site. Pre-commit hook This repository also comes with a package.json file that makes it easy to set up a pre-commit hook that enforces code formatting by running Prettier every time you git commit changes. To set up the formatting pre-commit hook: Install Node.js if you haven't already done so Run npm install in your project's root folder to install the Husky and Prettier modules(Note: Mac users should verify that Xcode command line tools are installed before running this command.) Husky will now run Prettier automatically every time you commit changes, with some other updates if you installed the recommended extension ApexDox. You can also run the formatting from the command line using the following command(check out package.json for the full list): npm run prettier" }, { "title": "changelog", "fileName": "changelog.html", - "text": "Changelog All notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning . Unreleased Merged Cosmetic rearrangements, apexdoc #55 4.3.0 Queues, Child Objects #53 Version 4.3.0 pt 2 #47 Version 4.3.0 #44 Codecov to v3 #41 4.2.1 - 2022-05-25 Merged Version 4.2.1 #37 Namespace to sample code #36 v4.2.0 #30 Fixed Version 4.2.1(#37) #35 #34 Namespace to sample code(#36) #35 4.2.0 - 2022-04-01 Merged Specify Action Plan Name in Invocable Apex #27 Prettier, JS fixing #26 Highlight.js to 11.5 #25 Add changelog #24 Bump minimist from 1.2.5 to 1.2.6 #23 Upgrading Instructions #22 Add Codecov #21 4.1.0 - 2022-03-17 Merged Release Ready #19 Pre-Release(beta15) #18 Pre-Commit ApexDox cleanup #16 Scripts, Cleanup, New Build #15 4.0.0-9 - 2022-02-23 Merged AP Task AssignedTo field cleanup #14 Managed vs Unmanaged Project Config #13 Permissions Updates #12 Remove tests from ApexDox #10 Security, code coverage, Print page, Spring 22! #7 Code and documentation cleanup #6 PMD-suggested cleanup #5 Rename Template Task #4 Version 4.0.0.7 #3 Code comment cleanup #2 ApexDocs, Project Files, PMD rules #1" + "text": "Changelog All notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning . Unreleased Merged build(deps-dev): bump eslint from 8.34.0 to 8.35.0 #4 feat(tests): update tests(assertions, messages) #3 feat: update API to 57.0 #1 Bump github/codeql-action from 1 to 2 #59 Fix assigned to field #60 Archived flag, dependent task fixes, SOQL optimization #58 Cosmetic rearrangements, apexdoc #55 4.3.0 Queues, Child Objects #53 Version 4.3.0 pt 2 #47 Version 4.3.0 #44 Codecov to v3 #41 4.2.1 - 2022-05-25 Merged Version 4.2.1 #37 Namespace to sample code #36 v4.2.0 #30 Fixed Version 4.2.1(#37) #35 #34 Namespace to sample code(#36) #35 4.2.0 - 2022-04-01 Merged Specify Action Plan Name in Invocable Apex #27 Prettier, JS fixing #26 Highlight.js to 11.5 #25 Add changelog #24 Bump minimist from 1.2.5 to 1.2.6 #23 Upgrading Instructions #22 Add Codecov #21 4.1.0 - 2022-03-17 Merged Release Ready #19 Pre-Release(beta15) #18 Pre-Commit ApexDox cleanup #16 Scripts, Cleanup, New Build #15 4.0.0-9 - 2022-02-23 Merged AP Task AssignedTo field cleanup #14 Managed vs Unmanaged Project Config #13 Permissions Updates #12 Remove tests from ApexDox #10 Security, code coverage, Print page, Spring 22! #7 Code and documentation cleanup #6 PMD-suggested cleanup #5 Rename Template Task #4 Version 4.0.0.7 #3 Code comment cleanup #2 ApexDocs, Project Files, PMD rules #1" }, { "title": "ActionPlanCreateInvocable", @@ -22,7 +22,7 @@ export default [ { "title": "ActionPlanCreationController", "fileName": "ActionPlanCreationController.html", - "text": "ActionPlanCreationController Controller for ActionPlan Create and ActionPlan Edit screens(the same page overrides both actions) Signature public with sharing class ActionPlanCreationController See ActionPlanCreateInvocable Authors Rodrigo Birriel , David Schach Since 2022 ActionPlanCreationController Properties Name Signature Annotations Description actionPlan private ActionPlan__c actionPlan @TestVisible Page Action Plan addedTask private APTask__c addedTask @testVisible The APTask__c instantiated when clicking the Add New Task link on the page apTasks private List apTasks @testVisible Stored APTask__c records for the page. See getAPTasks() canDisplayReminder public Boolean canDisplayReminder Is the User able to see reminders? cloneParam private String cloneParam Are we cloning an Action Plan? If so, this is 1. Otherwise, it is 0. errorMsg private String errorMsg Error message to display(outside of Apex.PageMessages) hasRelated public Boolean hasRelated Is there a related record or template when we load the page? hasRelatedObject public Boolean hasRelatedObject Set to true if a relationship field is filled inVisualforceContext private Boolean inVisualforceContext @testVisible Esure we are working in Visualforce context. For future functionality allowing invocable Apex to call this class directly mapTasksListBkp private Map mapTasksListBkp Map to retrieve our APTaskWrapper records by APTask Id Currently unused; should be deleted if package testing passes pendingDeletes private List pendingDeletes Temporary list of APTasks to delete, based on taskIndex refId public String refId Getter and Setter for refId(related record Id) refType public String refType Getter and Setter for RefType(related object Name) relatedFieldName public String relatedFieldName Get the specific lookup field used by this Action Plan relatedObjDisplayField public String relatedObjDisplayField The field on the related record we use to display on the ActionPlan.(Not Name for Case and Contract) relatedObjectName public String relatedObjectName The name of the object(the same as the relationship field, except for standard objects) the AP is related to. NOT the name of the related record relatedObjectOptions private List relatedObjectOptions Picklist of related object options, generated from the Field Set on Action Plan relatedObjLabelPlural public String relatedObjLabelPlural Related Object Name(Plural) relatedObjNameList private List relatedObjNameList @TestVisible We need a list of parent RECORD names when showing all the parents when we mass-create action plans This initializes the list, and then divides it into three parts for three columns on the page. relatedRecordIDs private Set relatedRecordIDs Related Record IDs relatedRecordsOne public List relatedRecordsOne Column one of related records relatedRecordsThree public List relatedRecordsThree Column three of related records relatedRecordsTwo public List relatedRecordsTwo Column two of related records relationshipFields private List relationshipFields Memoize relationship fields subtitle public String subtitle The subtitle shown on the page taskHasRecordType public Boolean taskHasRecordType If the Task object has Record Types enabled, return true taskIndex private Double taskIndex Max taskIndex for this Action Plan taskOwnerMap public Map taskOwnerMap Map of Action Plan Task Id to the Task owner(or APTask User if no Task has been created) taskPriorities private List taskPriorities Picklist of Task.Priority values taskTypes private List taskTypes Picklist of Task.Type values templateId public Id templateId TemplateId is pulled from the page parameters and tells us if we're making an Action Plan based on a template It can also be set by choosing a template when applying a template to one or more records ActionPlanCreationController Constructors ActionPlanCreationController(stdController) Constructor for ActionPlan Create/Edit Page ActionPlanCreationController(stdController) Constructor for ActionPlan Create/Edit Page Signature public ActionPlanCreationController(ApexPages.StandardController stdController) Parameters stdController Type: ApexPages.StandardController ActionPlan__c standard controller Author David Schach ActionPlanCreationController Methods addTask() Creates a blank APTask__c record and adds it to apTasks Sets addedTask to the APTask__c calculateMaxTaskIndex() Calculates the highest task index value for Action Plan Tasks calculateMaxTemplateTaskIndex() Calculates the highest task index value for Action Plan Template Tasks cancel() Action that redirects to previous page checkCycleDependent() Checks if Action Plan Tasks has cyclic dependency. checkHasRelated() Check all relationship fields and return true if at least one is filled checkPendingDeletes() Check if have pending Tasks to delete chooseDisplayField(objectName) Based on the related object name, we display a field from that object as the related record dependantCycle(controllingTask, index) Check for cyclically dependent tasks findActivityEnabledObjects() Get all available WhatId and WhoId objects getAllRelationshipFields() Get a list of all relationship fields to avoid SOQL error for unqueried fields getAPTasks() Gets Tasks related to an Action Plan, or initializes from the Action Plan Template getDefaultTaskRecordTypeId() Find user default task recordtype getDisplayTemplateLookup() Retrieves if template lookup must be displayed getErrorMsg() Getter method to return the error message getHoursOption() Generate picklist of available task due times getNameListSize() The size of the list of related objects available as parents to the Action Plan getNamespacePrefix() Retrieve the Namespace Prefix in case we are in a managed package. Needed for the JavaScript in the page getRecord(recordId) Main code for lightning lookup record selection. Included in this class because we use this as the controller for our main page getRecordTypeName() Convert Record Type Id to Record Type Name for the Action Plan's Tasks getRelatedObjectOptions() Getter method with the related object options by default. getSubjectItems() Returns list of Dependent tasks to fill drop down getTaskPriorities() Generate picklist of Task Priorities getTaskRTPicklistValues() Generate picklist of Task Record Types getTasks() Method that retrieves all AP tasks for a Action Plan for Visualforce Page getTaskTypes() Generate picklist of Task Types getTemplateName() Send Action Plan's Template Name to the Visualforce page Because the record has not been saved, the Action Plan Name on initialization is the same as the name of the template hasRelatedObject() Check if the action plan has a related object initCloneActionPlan() Initalize controller for cloning an Action Plan initEditActionPlan() Initalize controller for editing an Action Plan initNewActionPlan() Initalize controller for creating a new Action Plan initNewActionPlanFromTemplate(visualforceContext) Initalize controller for creating a new Action Plan from a template Used so we can instantiate this controller from Invocable Apex initNewActionPlanFromTemplate(visualforceContext, apt) Set up a new Action Plan from a template onLoad() Action on page load to ensure custom setting is created parseRelatedIDs(relatedIDs) Take related IDs parameter and put into a list if each is an Id. Discard invalid IDs queryAPTaskOwners(ap) Query all Task records for the Action Plan's Tasks so we can display the owher name read-only if it is a queue referedObjectInit() Set the Refered object to Create New Action Plan refreshRelatedObjectsLookUp() Refresh the related object lookup field. relatedObjectId() Returns the related object Id from lookup fields. removeTask() Action for removing a existing Action Plan Task retrieveNameRelatedRecord(relatedRecordIDs, relatedObjectName) Query the names of the parent records from the IDs. Some standard objects have special \"name\" fields retrieveTaskFromExistingActionPlan(actionPlanId) Get a Existing Action Plan Task List save() Action that saves a new Action Plan saveAndNew() Saves Action Plan Instance and tasks and returns to the creation page with the previous Action Plan's details. saveHandler() Saves Action Plan Handler. Decides if we are assigning to multiple parent records or just one saveMultipleAP() Save Action Plans for multiple related object instances. Invokes queueable process that creates: ActionPlan, ActionPlanTasksTemplate, and Tasks savePageRef() Saves Action Plan Instance and tasks and redirects to that detail page saveSingleAP() Saves Action Plan Instance and task. Also creates all due dates for tasks, then redirects to the AP list searchTemplates(searchText) Main code for lightning lookup search. Included in this class because we use this as the controller for our main page addTask() Creates a blank APTask__c record and adds it to apTasks Sets addedTask to the APTask__c Signature public PageReference addTask() Returns PageReference but we return null for a page refresh See ActionPlanCreationController.addedTask calculateMaxTaskIndex() Calculates the highest task index value for Action Plan Tasks Signature private Double calculateMaxTaskIndex() Returns Double maxIndex calculateMaxTemplateTaskIndex() Calculates the highest task index value for Action Plan Template Tasks Signature private Double calculateMaxTemplateTaskIndex() Returns Double maxIndex cancel() Action that redirects to previous page Signature public PageReference cancel() Returns PageReference previousPage checkCycleDependent() Checks if Action Plan Tasks has cyclic dependency. Signature public Boolean checkCycleDependent() Returns Boolean True if there is a cyclic dependency checkHasRelated() Check all relationship fields and return true if at least one is filled Signature private Boolean checkHasRelated() Returns Boolean Is at least one lookup to a parent record populated? checkPendingDeletes() Check if have pending Tasks to delete Signature private void checkPendingDeletes() chooseDisplayField(objectName) Based on the related object name, we display a field from that object as the related record Signature private String chooseDisplayField(String objectName) Parameters objectName Type: String SObject Name Returns String The display field Author David Schach dependantCycle(controllingTask, index) Check for cyclically dependent tasks Signature private Boolean dependantCycle(APTask__c controllingTask, Integer index) Parameters controllingTask Type: APTask__c The task we are checking index Type: Integer The index of the task(for referencing the controllign one) Returns Boolean Does this task have a dependency? findActivityEnabledObjects() Get all available WhatId and WhoId objects Signature private Set findActivityEnabledObjects() Returns Set Objects that Task can use in WhoId or WhatId getAllRelationshipFields() Get a list of all relationship fields to avoid SOQL error for unqueried fields Signature public List getAllRelationshipFields() Returns List Relationship fields from AcitonPlansUtilities See ActionPlansUtilities.getCustomRelationshipFields Author David Schach getAPTasks() Gets Tasks related to an Action Plan, or initializes from the Action Plan Template Signature public List getAPTasks() Returns List Action Plan Tasks getDefaultTaskRecordTypeId() Find user default task recordtype Signature @testVisible private Id getDefaultTaskRecordTypeId() Returns Id default Task record type Id See ActionPlansUtilities.getDefaultTaskRecordTypeId Author David Schach getDisplayTemplateLookup() Retrieves if template lookup must be displayed Signature public Boolean getDisplayTemplateLookup() Returns Boolean True if there is a related record or if there is a template ID provided getErrorMsg() Getter method to return the error message Signature public String getErrorMsg() Returns String Error message getHoursOption() Generate picklist of available task due times Signature public List getHoursOption() Returns List picklist of 30-minute intervals See ActionPlansUtilities.getHoursOption getNameListSize() The size of the list of related objects available as parents to the Action Plan Signature public Integer getNameListSize() Returns Integer The picklist size Author David Schach getNamespacePrefix() Retrieve the Namespace Prefix in case we are in a managed package. Needed for the JavaScript in the page Signature public String getNamespacePrefix() Returns String Namespace Prefix(LabsActionPlans or empty string) See ActionPlansUtilities.namespacePrefix Author David Schach getRecord(recordId) Main code for lightning lookup record selection. Included in this class because we use this as the controller for our main page Signature @RemoteAction public static List getRecord(String recordId) Parameters recordId Type: String Single record ID for chosen Action Plan Template Returns List Returned records See ActionPlanSectionHeaderController Since 2022-02 getRecordTypeName() Convert Record Type Id to Record Type Name for the Action Plan's Tasks Signature public String getRecordTypeName() Returns String Task Record Type Name for the current Action Plan Author David Schach getRelatedObjectOptions() Getter method with the related object options by default. Signature public List getRelatedObjectOptions() Returns List Picklist of all related objects to Action Plan See ActionPlanCreationController.findActivityEnabledObjects getSubjectItems() Returns list of Dependent tasks to fill drop down Signature public List getSubjectItems() Returns List All other AP Task subjects getTaskPriorities() Generate picklist of Task Priorities Signature public List getTaskPriorities() Returns List Picklist of Task.Priority See ActionPlansUtilities.getFieldOptions Author David Schach getTaskRTPicklistValues() Generate picklist of Task Record Types Signature public List getTaskRTPicklistValues() Returns List Picklist of Task.RecordType options See ActionPlansUtilities.getTaskRTPicklistValues Author David Schach getTasks() Method that retrieves all AP tasks for a Action Plan for Visualforce Page Signature public List getTasks() Returns List of AP Task Wrappers for Visualforce Page getTaskTypes() Generate picklist of Task Types Signature public List getTaskTypes() Returns Picklist of Task.Type See ActionPlansUtilities.getFieldOptions Author David Schach getTemplateName() Send Action Plan's Template Name to the Visualforce page Because the record has not been saved, the Action Plan Name on initialization is the same as the name of the template Signature public String getTemplateName() Returns String ActionPlan__c.Name (from ActionPlan__c.Action_Plan_Template__r.Name ) Author David Schach hasRelatedObject() Check if the action plan has a related object Signature public Boolean hasRelatedObject() Returns Boolean Is a relationship field filled? See ActionPlansUtilities.getCustomRelationshipFields initCloneActionPlan() Initalize controller for cloning an Action Plan Signature private void initCloneActionPlan() initEditActionPlan() Initalize controller for editing an Action Plan Signature private void initEditActionPlan() initNewActionPlan() Initalize controller for creating a new Action Plan Signature private void initNewActionPlan() initNewActionPlanFromTemplate(visualforceContext) Initalize controller for creating a new Action Plan from a template Used so we can instantiate this controller from Invocable Apex Signature private void initNewActionPlanFromTemplate(Boolean visualforceContext) Parameters visualforceContext Type: Boolean Are we in Visualforce context? Author David Schach initNewActionPlanFromTemplate(visualforceContext, apt) Set up a new Action Plan from a template Signature private void initNewActionPlanFromTemplate(Boolean visualforceContext, ActionPlanTemplate__c apt) Parameters visualforceContext Type: Boolean Are we in Visualforce context? apt Type: ActionPlanTemplate__c ActionPlanTemplate__c record Author David Schach onLoad() Action on page load to ensure custom setting is created Signature public PageReference onLoad() Returns PageReference null(required for page actions method) See ActionPlansUtilities.onPageLoad parseRelatedIDs(relatedIDs) Take related IDs parameter and put into a list if each is an Id. Discard invalid IDs Signature private List parseRelatedIDs(String relatedIDs) Parameters relatedIDs Type: String The page URL parameters Returns List A list(not set) of all related IDs from the URL Author David Schach queryAPTaskOwners(ap) Query all Task records for the Action Plan's Tasks so we can display the owher name read-only if it is a queue Signature private Map queryAPTaskOwners(ActionPlan__c ap) Parameters ap Type: ActionPlan__c The Action Plan Returns Map of Task by Id Author David Schach referedObjectInit() Set the Refered object to Create New Action Plan Signature @TestVisible private void referedObjectInit() See ActionPlanCreationController.retrieveNameRelatedRecord refreshRelatedObjectsLookUp() Refresh the related object lookup field. Signature public PageReference refreshRelatedObjectsLookUp() Returns PageReference null See ActionPlansUtilities.getEscapedPageParameter relatedObjectId() Returns the related object Id from lookup fields. Signature @testVisible private Id relatedObjectId() Returns Id the related object id removeTask() Action for removing a existing Action Plan Task Signature public PageReference removeTask() Returns PageReference null to refresh current page retrieveNameRelatedRecord(relatedRecordIDs, relatedObjectName) Query the names of the parent records from the IDs. Some standard objects have special \"name\" fields Signature private List retrieveNameRelatedRecord(Set relatedRecordIDs, String relatedObjectName) Parameters relatedRecordIDs Type: Set The related object IDs relatedObjectName Type: String The name of the SObject for which the IDs refer Returns List List of related record names retrieveTaskFromExistingActionPlan(actionPlanId) Get a Existing Action Plan Task List Signature private List retrieveTaskFromExistingActionPlan(Id actionPlanId) Parameters actionPlanId Type: Id Parent ActionPlan__c Id Returns List All template tasks save() Action that saves a new Action Plan Signature public PageReference save() Returns PageReference null See ActionPlanCreationController.checkCycleDependent , ActionPlanCreationController.saveHandler saveAndNew() Saves Action Plan Instance and tasks and returns to the creation page with the previous Action Plan's details. Signature public PageReference saveAndNew() Returns newPage saveHandler() Saves Action Plan Handler. Decides if we are assigning to multiple parent records or just one Signature private PageReference saveHandler() Returns Pagereference called Method See ActionPlanCreationController.save , ActionPlanCreationController.savePageRef , ActionPlanCreationController.saveMultipleAP saveMultipleAP() Save Action Plans for multiple related object instances. Invokes queueable process that creates: ActionPlan, ActionPlanTasksTemplate, and Tasks Signature @TestVisible private PageReference saveMultipleAP() Returns Pagereference(null or ActionPlansHome with confirmation) See ActionPlansUtilities.getEscapedPageParameter savePageRef() Saves Action Plan Instance and tasks and redirects to that detail page Signature private PageReference savePageRef() Returns newPage See ActionPlanCreationController.saveSingleAP saveSingleAP() Saves Action Plan Instance and task. Also creates all due dates for tasks, then redirects to the AP list Signature private Id saveSingleAP() Returns Id Action Plan Id searchTemplates(searchText) Main code for lightning lookup search. Included in this class because we use this as the controller for our main page Signature @RemoteAction public static List searchTemplates(String searchText) Parameters searchText Type: String Search string(escaped!) to get matching AP Templates Returns List Returned records See ActionPlanSectionHeaderController Since 2022-02 ActionPlanCreationController.ApTaskWrapper Wrapper Class for AP Task SObject Signature public class ApTaskWrapper Author Rodrigo Birriel Since 08/01/2010 Author David Schach Since 4/2022 ActionPlanCreationController.ApTaskWrapper Properties Name Signature Description ap private ActionPlan__c ap Action Plan in wrapper apt public APTask__c apt Action Plan Task in wrapper assignToOwner private Boolean assignToOwner Does blank User field default to parent owner? Filled from custom setting isLast public Boolean isLast Last Task position public Integer position Task position(order on the page) userRequired public Boolean userRequired Defines if we set the APTask__c Assigned To field to required ActionPlanCreationController.ApTaskWrapper Constructors ApTaskWrapper(ap, apTask, position, apTaskRTId) Constructor for wrapper to display related APTask__c records on ActionPlan__c create/edit page ApTaskWrapper(ap, apTask, position, apTaskRTId) Constructor for wrapper to display related APTask__c records on ActionPlan__c create/edit page Signature public ApTaskWrapper(ActionPlan__c ap, APTask__c apTask, Integer position, Id apTaskRTId) Parameters ap Type: ActionPlan__c Action Plan record apTask Type: APTask__c Action Plan Task record position Type: Integer Position(in the list of AP Tasks) on the Page apTaskRTId Type: Id The Record Type of the Task eventually to be created ActionPlanCreationController.ApTaskWrapper Methods getUserRender() Logic for determining how to show the Assigned To field for the AP Task If we show the UserLookup, set the UserRequired property to determine if the field is required getUserRender() Logic for determining how to show the Assigned To field for the AP Task If we show the UserLookup, set the UserRequired property to determine if the field is required Signature public String getUserRender() Returns String UserReadOnly, UserLookup, OwnerPlaceholder Author David Schach ActionPlanCreationController.OwnerWrapper Wrapper class for Task owner, with Name and Id. Used to determine if owned by a Queue Signature public class OwnerWrapper ActionPlanCreationController.OwnerWrapper Properties Name Signature Description tOwnerId public Id tOwnerId Task Owner Id(User or Queue) tOwnerName public String tOwnerName Task Owner Name(User or Queue) ActionPlanCreationController.OwnerWrapper Constructors OwnerWrapper(taskOwnerId, taskOwnerName) Constructor for OwnerWrapper OwnerWrapper(taskOwnerId, taskOwnerName) Constructor for OwnerWrapper Signature public OwnerWrapper(Id taskOwnerId, String taskOwnerName) Parameters taskOwnerId Type: Id Task.OwnerId taskOwnerName Type: String Task.Owner.Name (User or Queue) Author David Schach" + "text": "ActionPlanCreationController Controller for ActionPlan Create and ActionPlan Edit screens(the same page overrides both actions) Signature public with sharing class ActionPlanCreationController See ActionPlanCreateInvocable Authors Rodrigo Birriel , David Schach Since 2022 ActionPlanCreationController Properties Name Signature Annotations Description actionPlan private ActionPlan__c actionPlan @TestVisible Page Action Plan addedTask private APTask__c addedTask @testVisible The APTask__c instantiated when clicking the Add New Task link on the page apTasks private List apTasks @testVisible Stored APTask__c records for the page. See getAPTasks() canDisplayReminder public Boolean canDisplayReminder Is the User able to see reminders? cloneParam private String cloneParam Are we cloning an Action Plan? If so, this is 1. Otherwise, it is 0. errorMsg private String errorMsg Error message to display(outside of Apex.PageMessages) hasRelated public Boolean hasRelated Is there a related record or template when we load the page? hasRelatedObject public Boolean hasRelatedObject Set to true if a relationship field is filled inVisualforceContext private Boolean inVisualforceContext @testVisible Esure we are working in Visualforce context. For future functionality allowing invocable Apex to call this class directly mapTasksListBkp private Map mapTasksListBkp Map to retrieve our APTaskWrapper records by APTask Id Currently unused; should be deleted if package testing passes pendingDeletes private List pendingDeletes Temporary list of APTasks to delete, based on taskIndex refId public String refId Getter and Setter for refId(related record Id) refType public String refType Getter and Setter for RefType(related object Name) relatedFieldName public String relatedFieldName Get the specific lookup field used by this Action Plan relatedObjDisplayField public String relatedObjDisplayField The field on the related record we use to display on the ActionPlan.(Not Name for Case and Contract) relatedObjectName public String relatedObjectName The name of the object(the same as the relationship field, except for standard objects) the AP is related to. NOT the name of the related record relatedObjectOptions private List relatedObjectOptions Picklist of related object options, generated from the Field Set on Action Plan relatedObjLabelPlural public String relatedObjLabelPlural Related Object Name(Plural) relatedObjNameList private List relatedObjNameList @TestVisible We need a list of parent RECORD names when showing all the parents when we mass-create action plans This initializes the list, and then divides it into three parts for three columns on the page. relatedRecordIDs private Set relatedRecordIDs Related Record IDs relatedRecordsOne public List relatedRecordsOne Column one of related records relatedRecordsThree public List relatedRecordsThree Column three of related records relatedRecordsTwo public List relatedRecordsTwo Column two of related records relationshipFields private List relationshipFields Memoize relationship fields subtitle public String subtitle The subtitle shown on the page taskHasRecordType public Boolean taskHasRecordType If the Task object has Record Types enabled, return true taskIndex private Double taskIndex Max taskIndex for this Action Plan taskOwnerMap public Map taskOwnerMap Map of Action Plan Task Id to the Task owner(or APTask User if no Task has been created) taskPriorities private List taskPriorities Picklist of Task.Priority values taskTypes private List taskTypes Picklist of Task.Type values templateId public Id templateId TemplateId is pulled from the page parameters and tells us if we're making an Action Plan based on a template It can also be set by choosing a template when applying a template to one or more records ActionPlanCreationController Constructors ActionPlanCreationController(stdController) Constructor for ActionPlan Create/Edit Page ActionPlanCreationController(stdController) Constructor for ActionPlan Create/Edit Page Signature public ActionPlanCreationController(ApexPages.StandardController stdController) Parameters stdController Type: ApexPages.StandardController ActionPlan__c standard controller Author David Schach ActionPlanCreationController Methods addTask() Creates a blank APTask__c record and adds it to apTasks Sets addedTask to the APTask__c calculateMaxTaskIndex() Calculates the highest task index value for Action Plan Tasks calculateMaxTemplateTaskIndex() Calculates the highest task index value for Action Plan Template Tasks cancel() Action that redirects to previous page checkCycleDependent() Checks if Action Plan Tasks has cyclic dependency. checkHasRelated() Check all relationship fields and return true if at least one is filled checkPendingDeletes() Check if have pending Tasks to delete chooseDisplayField(objectName) Based on the related object name, we display a field from that object as the related record dependantCycle(controllingTask, index) Check for cyclically dependent tasks findActivityEnabledObjects() Get all available WhatId and WhoId objects getAllRelationshipFields() Get a list of all relationship fields to avoid SOQL error for unqueried fields getAPTasks() Gets Tasks related to an Action Plan, or initializes from the Action Plan Template getDefaultTaskRecordTypeId() Find user default task recordtype getDisplayTemplateLookup() Retrieves if template lookup must be displayed getErrorMsg() Getter method to return the error message getHoursOption() Generate picklist of available task due times getNameListSize() The size of the list of related objects available as parents to the Action Plan getNamespacePrefix() Retrieve the Namespace Prefix in case we are in a managed package. Needed for the JavaScript in the page getRecordTypeName() Convert Record Type Id to Record Type Name for the Action Plan's Tasks getRelatedObjectOptions() Getter method with the related object options by default. getSubjectItems() Returns list of Dependent tasks to fill drop down getTaskPriorities() Generate picklist of Task Priorities getTaskRTPicklistValues() Generate picklist of Task Record Types getTasks() Method that retrieves all AP tasks for a Action Plan for Visualforce Page getTaskTypes() Generate picklist of Task Types getTemplateName() Send Action Plan's Template Name to the Visualforce page Because the record has not been saved, the Action Plan Name on initialization is the same as the name of the template hasRelatedObject() Check if the action plan has a related object initCloneActionPlan() Initalize controller for cloning an Action Plan initEditActionPlan() Initalize controller for editing an Action Plan initNewActionPlan() Initalize controller for creating a new Action Plan initNewActionPlanFromTemplate(visualforceContext) Initalize controller for creating a new Action Plan from a template Used so we can instantiate this controller from Invocable Apex initNewActionPlanFromTemplate(visualforceContext, apt) Set up a new Action Plan from a template onLoad() Action on page load to ensure custom setting is created parseRelatedIDs(relatedIDs) Take related IDs parameter and put into a list if each is an Id. Discard invalid IDs queryAPTaskOwners(ap) Query all Task records for the Action Plan's Tasks so we can display the owher name read-only if it is a queue queryRecord(recordId) Main code for lightning lookup record selection. Included in this class because we use this as the controller for our main page referedObjectInit() Set the Refered object to Create New Action Plan refreshRelatedObjectsLookUp() Refresh the related object lookup field. relatedObjectId() Returns the related object Id from lookup fields. removeTask() Action for removing a existing Action Plan Task retrieveNameRelatedRecord(relatedRecordIDs, relatedObjectName) Query the names of the parent records from the IDs. Some standard objects have special \"name\" fields retrieveTaskFromExistingActionPlan(actionPlanId) Get a Existing Action Plan Task List save() Action that saves a new Action Plan saveAndNew() Saves Action Plan Instance and tasks and returns to the creation page with the previous Action Plan's details. saveHandler() Saves Action Plan Handler. Decides if we are assigning to multiple parent records or just one saveMultipleAP() Save Action Plans for multiple related object instances. Invokes queueable process that creates: ActionPlan, ActionPlanTasksTemplate, and Tasks savePageRef() Saves Action Plan Instance and tasks and redirects to that detail page saveSingleAP() Saves Action Plan Instance and task. Also creates all due dates for tasks, then redirects to the AP list searchTemplates(searchText) Main code for lightning lookup search. Included in this class because we use this as the controller for our main page addTask() Creates a blank APTask__c record and adds it to apTasks Sets addedTask to the APTask__c Signature public PageReference addTask() Returns PageReference but we return null for a page refresh See ActionPlanCreationController.addedTask calculateMaxTaskIndex() Calculates the highest task index value for Action Plan Tasks Signature private Double calculateMaxTaskIndex() Returns Double maxIndex calculateMaxTemplateTaskIndex() Calculates the highest task index value for Action Plan Template Tasks Signature private Double calculateMaxTemplateTaskIndex() Returns Double maxIndex cancel() Action that redirects to previous page Signature public PageReference cancel() Returns PageReference previousPage checkCycleDependent() Checks if Action Plan Tasks has cyclic dependency. Signature public Boolean checkCycleDependent() Returns Boolean True if there is a cyclic dependency checkHasRelated() Check all relationship fields and return true if at least one is filled Signature private Boolean checkHasRelated() Returns Boolean Is at least one lookup to a parent record populated? checkPendingDeletes() Check if have pending Tasks to delete Signature private void checkPendingDeletes() chooseDisplayField(objectName) Based on the related object name, we display a field from that object as the related record Signature private String chooseDisplayField(String objectName) Parameters objectName Type: String SObject Name Returns String The display field Author David Schach dependantCycle(controllingTask, index) Check for cyclically dependent tasks Signature private Boolean dependantCycle(APTask__c controllingTask, Integer index) Parameters controllingTask Type: APTask__c The task we are checking index Type: Integer The index of the task(for referencing the controllign one) Returns Boolean Does this task have a dependency? findActivityEnabledObjects() Get all available WhatId and WhoId objects Signature private Set findActivityEnabledObjects() Returns Set Objects that Task can use in WhoId or WhatId getAllRelationshipFields() Get a list of all relationship fields to avoid SOQL error for unqueried fields Signature public List getAllRelationshipFields() Returns List Relationship fields from AcitonPlansUtilities See ActionPlansUtilities.getCustomRelationshipFields Author David Schach getAPTasks() Gets Tasks related to an Action Plan, or initializes from the Action Plan Template Signature public List getAPTasks() Returns List Action Plan Tasks getDefaultTaskRecordTypeId() Find user default task recordtype Signature @testVisible private Id getDefaultTaskRecordTypeId() Returns Id default Task record type Id See ActionPlansUtilities.getDefaultTaskRecordTypeId Author David Schach getDisplayTemplateLookup() Retrieves if template lookup must be displayed Signature public Boolean getDisplayTemplateLookup() Returns Boolean True if there is a related record or if there is a template ID provided getErrorMsg() Getter method to return the error message Signature public String getErrorMsg() Returns String Error message getHoursOption() Generate picklist of available task due times Signature public List getHoursOption() Returns List picklist of 30-minute intervals See ActionPlansUtilities.getHoursOption getNameListSize() The size of the list of related objects available as parents to the Action Plan Signature public Integer getNameListSize() Returns Integer The picklist size Author David Schach getNamespacePrefix() Retrieve the Namespace Prefix in case we are in a managed package. Needed for the JavaScript in the page Signature public String getNamespacePrefix() Returns String Namespace Prefix(LabsActionPlans or empty string) See ActionPlansUtilities.namespacePrefix Author David Schach getRecordTypeName() Convert Record Type Id to Record Type Name for the Action Plan's Tasks Signature public String getRecordTypeName() Returns String Task Record Type Name for the current Action Plan Author David Schach getRelatedObjectOptions() Getter method with the related object options by default. Signature public List getRelatedObjectOptions() Returns List Picklist of all related objects to Action Plan See ActionPlanCreationController.findActivityEnabledObjects getSubjectItems() Returns list of Dependent tasks to fill drop down Signature public List getSubjectItems() Returns List All other AP Task subjects getTaskPriorities() Generate picklist of Task Priorities Signature public List getTaskPriorities() Returns List Picklist of Task.Priority See ActionPlansUtilities.getFieldOptions Author David Schach getTaskRTPicklistValues() Generate picklist of Task Record Types Signature public List getTaskRTPicklistValues() Returns List Picklist of Task.RecordType options See ActionPlansUtilities.getTaskRTPicklistValues Author David Schach getTasks() Method that retrieves all AP tasks for a Action Plan for Visualforce Page Signature public List getTasks() Returns List of AP Task Wrappers for Visualforce Page getTaskTypes() Generate picklist of Task Types Signature public List getTaskTypes() Returns Picklist of Task.Type See ActionPlansUtilities.getFieldOptions Author David Schach getTemplateName() Send Action Plan's Template Name to the Visualforce page Because the record has not been saved, the Action Plan Name on initialization is the same as the name of the template Signature public String getTemplateName() Returns String ActionPlan__c.Name (from ActionPlan__c.Action_Plan_Template__r.Name ) Author David Schach hasRelatedObject() Check if the action plan has a related object Signature public Boolean hasRelatedObject() Returns Boolean Is a relationship field filled? See ActionPlansUtilities.getCustomRelationshipFields initCloneActionPlan() Initalize controller for cloning an Action Plan Signature private void initCloneActionPlan() initEditActionPlan() Initalize controller for editing an Action Plan Signature private void initEditActionPlan() initNewActionPlan() Initalize controller for creating a new Action Plan Signature private void initNewActionPlan() initNewActionPlanFromTemplate(visualforceContext) Initalize controller for creating a new Action Plan from a template Used so we can instantiate this controller from Invocable Apex Signature private void initNewActionPlanFromTemplate(Boolean visualforceContext) Parameters visualforceContext Type: Boolean Are we in Visualforce context? Author David Schach initNewActionPlanFromTemplate(visualforceContext, apt) Set up a new Action Plan from a template Signature private void initNewActionPlanFromTemplate(Boolean visualforceContext, ActionPlanTemplate__c apt) Parameters visualforceContext Type: Boolean Are we in Visualforce context? apt Type: ActionPlanTemplate__c ActionPlanTemplate__c record Author David Schach onLoad() Action on page load to ensure custom setting is created Signature public PageReference onLoad() Returns PageReference null(required for page actions method) See ActionPlansUtilities.onPageLoad parseRelatedIDs(relatedIDs) Take related IDs parameter and put into a list if each is an Id. Discard invalid IDs Signature private List parseRelatedIDs(String relatedIDs) Parameters relatedIDs Type: String The page URL parameters Returns List A list(not set) of all related IDs from the URL Author David Schach queryAPTaskOwners(ap) Query all Task records for the Action Plan's Tasks so we can display the owher name read-only if it is a queue Signature private Map queryAPTaskOwners(ActionPlan__c ap) Parameters ap Type: ActionPlan__c The Action Plan Returns Map of Task by Id Author David Schach queryRecord(recordId) Main code for lightning lookup record selection. Included in this class because we use this as the controller for our main page Signature @RemoteAction public static List queryRecord(String recordId) Parameters recordId Type: String Single record ID for chosen Action Plan Template Returns List Returned records See ActionPlanSectionHeaderController Since 2023-02 referedObjectInit() Set the Refered object to Create New Action Plan Signature @TestVisible private void referedObjectInit() See ActionPlanCreationController.retrieveNameRelatedRecord refreshRelatedObjectsLookUp() Refresh the related object lookup field. Signature public PageReference refreshRelatedObjectsLookUp() Returns PageReference null See ActionPlansUtilities.getEscapedPageParameter relatedObjectId() Returns the related object Id from lookup fields. Signature @testVisible private Id relatedObjectId() Returns Id the related object id removeTask() Action for removing a existing Action Plan Task Signature public PageReference removeTask() Returns PageReference null to refresh current page retrieveNameRelatedRecord(relatedRecordIDs, relatedObjectName) Query the names of the parent records from the IDs. Some standard objects have special \"name\" fields Signature private List retrieveNameRelatedRecord(Set relatedRecordIDs, String relatedObjectName) Parameters relatedRecordIDs Type: Set The related object IDs relatedObjectName Type: String The name of the SObject for which the IDs refer Returns List List of related record names retrieveTaskFromExistingActionPlan(actionPlanId) Get a Existing Action Plan Task List Signature private List retrieveTaskFromExistingActionPlan(Id actionPlanId) Parameters actionPlanId Type: Id Parent ActionPlan__c Id Returns List All template tasks save() Action that saves a new Action Plan Signature public PageReference save() Returns PageReference null See ActionPlanCreationController.checkCycleDependent , ActionPlanCreationController.saveHandler saveAndNew() Saves Action Plan Instance and tasks and returns to the creation page with the previous Action Plan's details. Signature public PageReference saveAndNew() Returns newPage saveHandler() Saves Action Plan Handler. Decides if we are assigning to multiple parent records or just one Signature private PageReference saveHandler() Returns Pagereference called Method See ActionPlanCreationController.save , ActionPlanCreationController.savePageRef , ActionPlanCreationController.saveMultipleAP saveMultipleAP() Save Action Plans for multiple related object instances. Invokes queueable process that creates: ActionPlan, ActionPlanTasksTemplate, and Tasks Signature @TestVisible private PageReference saveMultipleAP() Returns Pagereference(null or ActionPlansHome with confirmation) See ActionPlansUtilities.getEscapedPageParameter savePageRef() Saves Action Plan Instance and tasks and redirects to that detail page Signature private PageReference savePageRef() Returns newPage See ActionPlanCreationController.saveSingleAP saveSingleAP() Saves Action Plan Instance and task. Also creates all due dates for tasks, then redirects to the AP list Signature private Id saveSingleAP() Returns Id Action Plan Id searchTemplates(searchText) Main code for lightning lookup search. Included in this class because we use this as the controller for our main page Signature @RemoteAction public static List searchTemplates(String searchText) Parameters searchText Type: String Search string(escaped!) to get matching AP Templates Returns List Returned records See ActionPlanSectionHeaderController Since 2023-02 ActionPlanCreationController.ApTaskWrapper Wrapper Class for AP Task SObject Note: I don't like the way we decide to show the User field - especially if we want to assign to a Queue. This part should be refactored next, probably with a User/Queue picklist depending on org settings Signature public class ApTaskWrapper Author Rodrigo Birriel Since 08/01/2010 Author David Schach Since 2022-04 ActionPlanCreationController.ApTaskWrapper Properties Name Signature Description ap private ActionPlan__c ap Action Plan in wrapper apt public APTask__c apt Action Plan Task in wrapper assignToOwner private Boolean assignToOwner Does blank User field default to parent owner? Filled from custom setting canEditUserField private Boolean canEditUserField Because it uses a describe call, check user permission once, in constructor isLast public Boolean isLast Last Task pageHasRelatedIds private Boolean pageHasRelatedIds Store if page has relatedIDs once; set in constructor pageTemplateId private String pageTemplateId Store page template ID once, in constructor position public Integer position Task position(order on the page) userRequired public Boolean userRequired Defines if we set the APTask__c Assigned To field to required ActionPlanCreationController.ApTaskWrapper Constructors ApTaskWrapper(ap, apTask, position, apTaskRTId) Constructor for wrapper to display related APTask__c records on ActionPlan__c create/edit page ApTaskWrapper(ap, apTask, position, apTaskRTId) Constructor for wrapper to display related APTask__c records on ActionPlan__c create/edit page Signature public ApTaskWrapper(ActionPlan__c ap, APTask__c apTask, Integer position, Id apTaskRTId) Parameters ap Type: ActionPlan__c Action Plan record apTask Type: APTask__c Action Plan Task record position Type: Integer Position(in the list of AP Tasks) on the Page apTaskRTId Type: Id The Record Type of the Task eventually to be created ActionPlanCreationController.ApTaskWrapper Methods getUserRender() Logic for determining how to show the Assigned To field for the AP Task If we show the UserLookup, set the UserRequired property to determine if the field is required getUserRender() Logic for determining how to show the Assigned To field for the AP Task If we show the UserLookup, set the UserRequired property to determine if the field is required Signature public String getUserRender() Returns String UserReadOnly, UserLookup, OwnerPlaceholder Author David Schach ActionPlanCreationController.OwnerWrapper Wrapper class for Task owner, with Name and Id. Used to determine if owned by a Queue Signature public class OwnerWrapper ActionPlanCreationController.OwnerWrapper Properties Name Signature Description tOwnerId public Id tOwnerId Task Owner Id(User or Queue) tOwnerName public String tOwnerName Task Owner Name(User or Queue) ActionPlanCreationController.OwnerWrapper Constructors OwnerWrapper(taskOwnerId, taskOwnerName) Constructor for OwnerWrapper OwnerWrapper(taskOwnerId, taskOwnerName) Constructor for OwnerWrapper Signature public OwnerWrapper(Id taskOwnerId, String taskOwnerName) Parameters taskOwnerId Type: Id Task.OwnerId taskOwnerName Type: String Task.Owner.Name (User or Queue) Author David Schach" }, { "title": "ActionPlanDetailController", @@ -57,7 +57,7 @@ export default [ { "title": "ActionPlansBuilderUtilities", "fileName": "ActionPlansBuilderUtilities.html", - "text": "ActionPlansBuilderUtilities Builder Utilities class Signature public inherited sharing class ActionPlansBuilderUtilities See ActionPlanCreateInvocable , ActionPlanCreationController , ActionPlansQueueableBuilder Authors Rodrigo Birriel , David Schach Since v3 ActionPlansBuilderUtilities Properties Name Signature Description allTasksToUpsert private List allTasksToUpsert A single list of all Tasks - we set the DMLOption to send an email notification when we add the Task to this list baseAPTaskList private List baseAPTaskList mode private ApEditMode mode Store the enum value relActionPlans private List relActionPlans relAPTaskList private List relAPTaskList relatedObjectName private String relatedObjectName relatedRecordIDs private Set relatedRecordIDs Enums Name Signature Values Description ApEditMode private enum ApEditMode MODE_EDIT_SINGLE, MODE_NEW Editing or creating an ActionPlan__c record? ActionPlansBuilderUtilities Constructors ActionPlansBuilderUtilities(baseObj, aPTListparam, refType, oIdsLIst) Constructor ActionPlansBuilderUtilities(baseObj, aPTListparam, refType, oIdsLIst) Constructor Signature public ActionPlansBuilderUtilities(ActionPlan__c baseObj, List aPTListparam, String refType, Set oIdsLIst) Parameters baseObj Type: ActionPlan__c ActionPlan object aPTListparam Type: List Action Plan Task Template records refType Type: String Related object Name oIdsLIst Type: Set Parent IDs ActionPlansBuilderUtilities Methods generateActionPlans() Generate Action Plans from parameters passed to this class generateObjectFeeds(recIDs) Generate New FeedItems for multiple Action Plans getAPTaskTemplateUser(ap, relObjOwners, apTaskUser) Read the Action Plan and see the custom setting to determine who should own the AP Tasks getPostObjectBody(recID, apName) Given a parentID and the name of an Action Plan, make the FeedItem post body getRelatedRecordOwnerId(ap, relObjOwners) Given an Action Plan, looking in its relationship fields, find the owner of the related record from the map of records and owners retrieveOwnersDataRelatedObject(relatedRecordIDs) Retrieve the owner list from the related object. Exclude owners that are not users(that are queues) generateActionPlans() Generate Action Plans from parameters passed to this class Signature public Id generateActionPlans() Returns Id of the first created ActionPlan__c Author David Schach generateObjectFeeds(recIDs) Generate New FeedItems for multiple Action Plans Signature public static void generateObjectFeeds(Set recIDs) Parameters recIDs Type: Set Set of IDs of records for which we may make Chatter posts See ActionPlansUtilities.getRelatedSObjectDescribe , ActionPlansUtilities.getPostObjectBody getAPTaskTemplateUser(ap, relObjOwners, apTaskUser) Read the Action Plan and see the custom setting to determine who should own the AP Tasks Signature public static Id getAPTaskTemplateUser(ActionPlan__c ap, Map relObjOwners, Id apTaskUser) Parameters ap Type: ActionPlan__c The ActionPlan__c relObjOwners Type: Map Map of Id to record OwnerId apTaskUser Type: Id The record user Id Returns Id The APTask__c assigned user See ActionPlansBuilderUtilities.getRelatedRecordOwnerId getPostObjectBody(recID, apName) Given a parentID and the name of an Action Plan, make the FeedItem post body Signature public static String getPostObjectBody(Id recID, String apName) Parameters recID Type: Id Parent ID apName Type: String Action Plan Name Returns String The FeedItem Body Author David Schach getRelatedRecordOwnerId(ap, relObjOwners) Given an Action Plan, looking in its relationship fields, find the owner of the related record from the map of records and owners Signature public static Id getRelatedRecordOwnerId(ActionPlan__c ap, Map relObjOwners) Parameters ap Type: ActionPlan__c ActionPlan__c relObjOwners Type: Map Map of related object Id to OwnerId Returns Id The related record OwnerId retrieveOwnersDataRelatedObject(relatedRecordIDs) Retrieve the owner list from the related object. Exclude owners that are not users(that are queues) Signature public static Map retrieveOwnersDataRelatedObject(Set relatedRecordIDs) Parameters relatedRecordIDs Type: Set List of sobject record Ids Returns Map Map of record Id to Owner Id" + "text": "ActionPlansBuilderUtilities Builder Utilities class Signature public inherited sharing class ActionPlansBuilderUtilities See ActionPlanCreateInvocable , ActionPlanCreationController , ActionPlansQueueableBuilder Authors Rodrigo Birriel , David Schach Since v3 ActionPlansBuilderUtilities Properties Name Signature Description allTasksToUpsert private List allTasksToUpsert A single list of all Tasks - we set the DMLOption to send an email notification when we add the Task to this list baseAPTaskList private List baseAPTaskList Local store of aPTListparam passed to constructor mode private ApEditMode mode Store the enum value relActionPlans private List relActionPlans The constructed ActionPlan__c records relatedObjectName private String relatedObjectName Local store of refType passed to constructor relatedRecordIDs private Set relatedRecordIDs Local store of oIdsSet passed to constructor Enums Name Signature Values Description ApEditMode private enum ApEditMode MODE_EDIT_SINGLE, MODE_NEW Editing or creating an ActionPlan__c record? ActionPlansBuilderUtilities Constructors ActionPlansBuilderUtilities(baseObj, aPTListparam, refType, oIdsSet) Constructor ActionPlansBuilderUtilities(baseObj, aPTListparam, refType, oIdsSet) Constructor Signature public ActionPlansBuilderUtilities(ActionPlan__c baseObj, List aPTListparam, String refType, Set oIdsSet) Parameters baseObj Type: ActionPlan__c ActionPlan object aPTListparam Type: List Action Plan Task Template records refType Type: String Related object Name oIdsSet Type: Set Parent IDs ActionPlansBuilderUtilities Methods generateActionPlans() Generate Action Plans from parameters passed to this class generateObjectFeeds(recIDs) Generate New FeedItems for multiple Action Plans getAPTaskTemplateUser(ap, relObjOwners, apTaskUser) Read the Action Plan and see the custom setting to determine who should own the AP Tasks getPostObjectBody(recID, apName) Given a parentID and the name of an Action Plan, make the FeedItem post body getRelatedRecordOwnerId(ap, relObjOwners) Given an Action Plan, looking in its relationship fields, find the owner of the related record from the map of records and owners retrieveOwnersDataRelatedObject(relatedRecordIDs) Retrieve the owner list from the related object. Exclude owners that are not users(that are queues) generateActionPlans() Generate Action Plans from parameters passed to this class Signature public Id generateActionPlans() Returns Id of the first created ActionPlan__c Author David Schach generateObjectFeeds(recIDs) Generate New FeedItems for multiple Action Plans Signature public static void generateObjectFeeds(Set recIDs) Parameters recIDs Type: Set Set of IDs of records for which we may make Chatter posts See ActionPlansUtilities.getRelatedSObjectDescribe , ActionPlansUtilities.getPostObjectBody getAPTaskTemplateUser(ap, relObjOwners, apTaskUser) Read the Action Plan and see the custom setting to determine who should own the AP Tasks Signature public static Id getAPTaskTemplateUser(ActionPlan__c ap, Map relObjOwners, Id apTaskUser) Parameters ap Type: ActionPlan__c The ActionPlan__c relObjOwners Type: Map Map of Id to record OwnerId apTaskUser Type: Id The record user Id Returns Id The APTask__c assigned user See ActionPlansBuilderUtilities.getRelatedRecordOwnerId getPostObjectBody(recID, apName) Given a parentID and the name of an Action Plan, make the FeedItem post body Signature public static String getPostObjectBody(Id recID, String apName) Parameters recID Type: Id Parent ID apName Type: String Action Plan Name Returns String The FeedItem Body Author David Schach getRelatedRecordOwnerId(ap, relObjOwners) Given an Action Plan, looking in its relationship fields, find the owner of the related record from the map of records and owners Signature public static Id getRelatedRecordOwnerId(ActionPlan__c ap, Map relObjOwners) Parameters ap Type: ActionPlan__c ActionPlan__c relObjOwners Type: Map Map of related object Id to OwnerId Returns Id The related record OwnerId retrieveOwnersDataRelatedObject(relatedRecordIDs) Retrieve the owner list from the related object. Exclude owners that are not users(that are queues) Signature public static Map retrieveOwnersDataRelatedObject(Set relatedRecordIDs) Parameters relatedRecordIDs Type: Set List of sobject record Ids Returns Map Map of record Id to Owner Id" }, { "title": "ActionPlansCreateMultipleAPsExtension", @@ -77,7 +77,7 @@ export default [ { "title": "ActionPlansQueueableBuilder", "fileName": "ActionPlansQueueableBuilder.html", - "text": "ActionPlansQueueableBuilder Queueable Apex for creating Action Plans Signature public inherited sharing class ActionPlansQueueableBuilder implements Queueable See ActionPlansBuilderUtilities Author David Schach Since 2022 ActionPlansQueueableBuilder Properties Name Signature builtUtil private ActionPlansBuilderUtilities builtUtil ActionPlansQueueableBuilder Constructors ActionPlansQueueableBuilder(baseObj, aPTList, refType, oIdsSet) Constructor ActionPlansQueueableBuilder(baseObj, aPTList, refType, oIdsSet) Constructor Signature public ActionPlansQueueableBuilder(ActionPlan__c baseObj, List aPTList, String refType, Set oIdsSet) Parameters baseObj Type: ActionPlan__c ActionPlan base aPTList Type: List List of the task templates refType Type: String The related object name oIdsSet Type: Set IDs of related parents ActionPlansQueueableBuilder Methods execute(qc) Instead of a batch, we use queuable because it's more simple than Batch Apex execute(qc) Instead of a batch, we use queuable because it's more simple than Batch Apex Signature public void execute(QueueableContext qc) Parameters qc Type: QueueableContext QueueableContext (note: not BatchableContext which is in Batch Apex) See ActionPlansBuilderUtilities.generateActionPlans" + "text": "ActionPlansQueueableBuilder Queueable Apex for creating Action Plans Signature public inherited sharing class ActionPlansQueueableBuilder implements Queueable See ActionPlansBuilderUtilities Author David Schach Since 2022 ActionPlansQueueableBuilder Properties Name Signature buildUtil private ActionPlansBuilderUtilities buildUtil ActionPlansQueueableBuilder Constructors ActionPlansQueueableBuilder(baseObj, aPTList, refType, oIdsSet) Constructor ActionPlansQueueableBuilder(baseObj, aPTList, refType, oIdsSet) Constructor Signature public ActionPlansQueueableBuilder(ActionPlan__c baseObj, List aPTList, String refType, Set oIdsSet) Parameters baseObj Type: ActionPlan__c ActionPlan base aPTList Type: List List of the task templates refType Type: String The related object name oIdsSet Type: Set IDs of related parents See ActionPlansBuilderUtilities.ActionPlansBuilderUtilities ActionPlansQueueableBuilder Methods execute(qc) Instead of a batch, we use queuable because it's more simple than Batch Apex TODO: Change email error notification to Lightning notification execute(qc) Instead of a batch, we use queuable because it's more simple than Batch Apex TODO: Change email error notification to Lightning notification Signature public void execute(QueueableContext qc) Parameters qc Type: QueueableContext QueueableContext (note: not BatchableContext which is in Batch Apex) See ActionPlansBuilderUtilities.generateActionPlans" }, { "title": "ActionPlansRedirect", @@ -87,7 +87,7 @@ export default [ { "title": "ActionPlansSectionHeaderController", "fileName": "ActionPlansSectionHeaderController.html", - "text": "ActionPlansSectionHeaderController Controller for the Section Header at the top of every VF page. Determines the icon for the page object Code adapted from StackExchange Signature public inherited sharing class ActionPlansSectionHeaderController See https://salesforce.stackexchange.com/questions/116688/lightning-get-sobject-tab-icon Since 2022 Authors David Schach , Cricketlang Example
      {!$ObjectType[sObjType].label}
      ActionPlansSectionHeaderController Properties Name Signature Description objectName public String objectName The object name for the Section Header orgObject private String orgObject String to hold actual used object in case of namespaced app ActionPlansSectionHeaderController Methods getIsCustom() Is this a custom object? getObjectIconInfo() Map of Icon attribute and value getRecords(queryText) Main code for lightning lookup. Included in this class because we use this as the controller for our lookups the code is duplicated in AciontPlanCreationController because there is a lookup directly in that page(for now) This is a different approach than in ActionPlanCreationController, as we pass in the full query here, but there it is done by passing only the search key. isCustom(sObjectName) Given an object name, return if it is a custom object retrieveIconForObject(sObjectName) Explores the schema of the soject passed in and finds lightning icon style and image url for sObject If nothing is found, defaults to the custom icon Code adapted from https://salesforce.stackexchange.com/questions/116688/lightning-get-sobject-tab-icon Thanks to https://salesforce.stackexchange.com/users/12582/cricketlang Todo: Avoid describing all applications and tabs, and even use \"break\" to shorten the runtime getIsCustom() Is this a custom object? Signature public Boolean getIsCustom() Returns Boolean true if custom object See ActionPlansSectionHeaderController.isCustom getObjectIconInfo() Map of Icon attribute and value Signature public Map getObjectIconInfo() Returns Map Key-value pairs\\ See ActionPlansSectionHeaderController.retrieveIconForObject getRecords(queryText) Main code for lightning lookup. Included in this class because we use this as the controller for our lookups the code is duplicated in AciontPlanCreationController because there is a lookup directly in that page(for now) This is a different approach than in ActionPlanCreationController, as we pass in the full query here, but there it is done by passing only the search key. Signature @RemoteAction public static List getRecords(String queryText) Parameters queryText Type: String SOQL query to return records for the lookup Returns List Returned records See ActionPlanCreationController isCustom(sObjectName) Given an object name, return if it is a custom object Signature private Boolean isCustom(String sObjectName) Parameters sObjectName Type: String The name of the SObject Returns Boolean Is this object a custom object? retrieveIconForObject(sObjectName) Explores the schema of the soject passed in and finds lightning icon style and image url for sObject If nothing is found, defaults to the custom icon Code adapted from https://salesforce.stackexchange.com/questions/116688/lightning-get-sobject-tab-icon Thanks to https://salesforce.stackexchange.com/users/12582/cricketlang Todo: Avoid describing all applications and tabs, and even use \"break\" to shorten the runtime Signature private Map retrieveIconForObject(String sObjectName) Parameters sObjectName Type: String The sObject to find the icon for Returns Map Map of properties about the icon to be consumed by the front end. Returns values for keys: iconStyle,iconURL" + "text": "ActionPlansSectionHeaderController Controller for the Section Header at the top of every VF page. Determines the icon for the page object Code adapted from StackExchange Signature public inherited sharing class ActionPlansSectionHeaderController See https://salesforce.stackexchange.com/questions/116688/lightning-get-sobject-tab-icon Since 2022 Authors David Schach , Cricketlang Example
      {!$ObjectType[sObjType].label}
      ActionPlansSectionHeaderController Properties Name Signature Description objectName public String objectName The object name for the Section Header orgObject private String orgObject String to hold actual used object in case of namespaced app ActionPlansSectionHeaderController Methods getIsCustom() Is this a custom object? getObjectIconInfo() Map of Icon attribute and value isCustom(sObjectName) Given an object name, return if it is a custom object queryRecords(queryText) Main code for lightning lookup. Included in this class because we use this as the controller for our lookups the code is duplicated in AciontPlanCreationController because there is a lookup directly in that page(for now) This is a different approach than in ActionPlanCreationController, as we pass in the full query here, but there it is done by passing only the search key. retrieveIconForObject(sObjectName) Explores the schema of the soject passed in and finds lightning icon style and image url for sObject If nothing is found, defaults to the custom icon Code adapted from https://salesforce.stackexchange.com/questions/116688/lightning-get-sobject-tab-icon Thanks to https://salesforce.stackexchange.com/users/12582/cricketlang Todo: Avoid describing all applications and tabs, and even use \"break\" to shorten the runtime getIsCustom() Is this a custom object? Signature public Boolean getIsCustom() Returns Boolean true if custom object See ActionPlansSectionHeaderController.isCustom getObjectIconInfo() Map of Icon attribute and value Signature public Map getObjectIconInfo() Returns Map Key-value pairs\\ See ActionPlansSectionHeaderController.retrieveIconForObject isCustom(sObjectName) Given an object name, return if it is a custom object Signature private Boolean isCustom(String sObjectName) Parameters sObjectName Type: String The name of the SObject Returns Boolean Is this object a custom object? queryRecords(queryText) Main code for lightning lookup. Included in this class because we use this as the controller for our lookups the code is duplicated in AciontPlanCreationController because there is a lookup directly in that page(for now) This is a different approach than in ActionPlanCreationController, as we pass in the full query here, but there it is done by passing only the search key. Signature @RemoteAction public static List queryRecords(String queryText) Parameters queryText Type: String SOQL query to return records for the lookup Returns List Returned records See ActionPlanCreationController retrieveIconForObject(sObjectName) Explores the schema of the soject passed in and finds lightning icon style and image url for sObject If nothing is found, defaults to the custom icon Code adapted from https://salesforce.stackexchange.com/questions/116688/lightning-get-sobject-tab-icon Thanks to https://salesforce.stackexchange.com/users/12582/cricketlang Todo: Avoid describing all applications and tabs, and even use \"break\" to shorten the runtime Signature private Map retrieveIconForObject(String sObjectName) Parameters sObjectName Type: String The sObject to find the icon for Returns Map Map of properties about the icon to be consumed by the front end. Returns values for keys: iconStyle,iconURL" }, { "title": "ActionPlansTaskTriggerUtilities", diff --git a/docs/changelog.html b/docs/changelog.html index 91526b19..b83c6d03 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -1,448 +1,473 @@ - - - - Action Plans code documentation - - - - - - - - - - - - - - - - - - - - - - - - -
      - Show:    - -    -    -    - -
      - -

      Changelog

      -

      All notable changes to this project will be documented in this file.

      -

      - The format is based on Keep a Changelog
      and this project adheres to - Semantic Versioning. -

      -

      Unreleased

      -

      Merged

      -
        -
      • - Cosmetic rearrangements, apexdoc #55 -
      • -
      • - 4.3.0 Queues, Child Objects #53 -
      • -
      • - Version 4.3.0 pt 2 #47 -
      • -
      • - Version 4.3.0 #44 -
      • -
      • - Codecov to v3 #41 -
      • -
      -

      4.2.1 - 2022-05-25

      -

      Merged

      -
        -
      • - Version 4.2.1 #37 -
      • -
      • - Namespace to sample code #36 -
      • -
      • - v4.2.0 #30 -
      • -
      -

      Fixed

      -
        -
      • - Version 4.2.1 (#37) #35 - #34 -
      • -
      • - Namespace to sample code (#36) #35 -
      • -
      -

      4.2.0 - 2022-04-01

      -

      Merged

      -
        -
      • - Specify Action Plan Name in Invocable Apex #27 -
      • -
      • - Prettier, JS fixing #26 -
      • -
      • - Highlight.js to 11.5 #25 -
      • -
      • - Add changelog #24 -
      • -
      • - Bump minimist from 1.2.5 to 1.2.6 #23 -
      • -
      • - Upgrading Instructions #22 -
      • -
      • - Add Codecov #21 -
      • -
      -

      4.1.0 - 2022-03-17

      -

      Merged

      -
        -
      • - Release Ready #19 -
      • -
      • - Pre-Release (beta15) #18 -
      • -
      • - Pre-Commit ApexDox cleanup #16 -
      • -
      • - Scripts, Cleanup, New Build #15 -
      • -
      -

      4.0.0-9 - 2022-02-23

      -

      Merged

      -
        -
      • - AP Task AssignedTo field cleanup #14 -
      • -
      • - Managed vs Unmanaged Project Config #13 -
      • -
      • - Permissions Updates #12 -
      • -
      • - Remove tests from ApexDox #10 -
      • -
      • - Security, code coverage, Print page, Spring 22! #7 -
      • -
      • - Code and documentation cleanup #6 -
      • -
      • - PMD-suggested cleanup #5 -
      • -
      • - Rename Template Task #4 -
      • -
      • - Version 4.0.0.7 #3 -
      • -
      • - Code comment cleanup #2 -
      • -
      • - ApexDocs, Project Files, PMD rules #1 -
      • -
      -
      - - + +

      Changelog

      +

      All notable changes to this project will be documented in this file.

      +

      + The format is based on Keep a Changelog
      and this project adheres to + Semantic Versioning. +

      +

      Unreleased

      +

      Merged

      +
        +
      • + build(deps-dev): bump lint-staged from 13.1.2 to 13.2.0 #7 +
      • +
      • + build(deps-dev): bump eslint from 8.35.0 to 8.36.0 #6 +
      • +
      • + build(deps-dev): bump eslint from 8.34.0 to 8.35.0 #4 +
      • +
      • + feat(tests): update tests (assertions, messages) #3 +
      • +
      • + feat: update API to 57.0 #1 +
      • +
      • + Bump github/codeql-action from 1 to 2 #59 +
      • +
      • + Fix assigned to field #60 +
      • +
      • + Archived flag, dependent task fixes, SOQL optimization #58 +
      • +
      • + Cosmetic rearrangements, apexdoc #55 +
      • +
      • + 4.3.0 Queues, Child Objects #53 +
      • +
      • + Version 4.3.0 pt 2 #47 +
      • +
      • + Version 4.3.0 #44 +
      • +
      • + Codecov to v3 #41 +
      • +
      +

      Commits

      +
        +
      • + build(npm): update package dependencies e40b10a +
      • +
      • + lightning lookup w/o API v1 e8dac8e +
      • +
      • + docs(ApexDox): rerun ApexDox bc720e2 +
      • +
      • + docs(ApexDox): include Installation & Changelog 4910af9 +
      • +
      • + feat(docs): ApexDox version upgrade 178e1ce +
      • +
      • + build: move tests folder into classes 99d78d5 +
      • +
      • + Tests use Assert class 59d6ef2 +
      • +
      • + build(sfdx): change sfdx to sf commands 994b3f2 +
      • +
      • + revert(API): use 56.0 to avoid GVS bug 6eb588a +
      • +
      • + feat: finish Professional Edition template lookup 415fdcf +
      • +
      • + docs: update CanTheUser comments 22ea89c +
      • +
      • + API 56.0 4303659 +
      • +
      • + fix: page redirect on template from object 70f43ba +
      • +
      • + feat(sfdx): update sfdx to sf f360666 +
      • +
      • + fix: remove unnecessary jsencode 96070b1 +
      • +
      • + fix: redirect on template choice for records 8bf011b +
      • +
      • + Deploy rules & scripts 5b80488 +
      • +
      • + APTemplate lookup actions d34eaaf +
      • +
      • + fix(docs): update ApexDox e8481e8 +
      • +
      • + ci(codeQL): delete codeQL d/t IP address fa066cf +
      • +
      • + dependabot auto-merge b5e5d4f +
      • +
      • + docs: cleanup code, document variables f27e8dc +
      • +
      • + feat: Update tests to use Assert class 2069b97 +
      • +
      • + fix(build): Update plugin dependencies 4bf530c +
      • +
      • + Update scratch org definition files 851171c +
      • +
      • + chore: Scratch org shape updates fbe390e +
      • +
      • + docs(Apex): test comments 5056ebc +
      • +
      • + ci: update PR sfdx to sf, npm installation 77fa739 +
      • +
      • + build(changelog): instructions & tag prefix 0ae955b +
      • +
      • + Beta 4.3.0-9 d4b477c +
      • +
      • + fix(sfdx): sf apex test correct config 6a030e4 +
      • +
      • + feat: sfdx-scanner config 42c6889 +
      • +
      • + docs(README): add image descriptions 2b9f999 +
      • +
      • + Dependabot alerts dea7b92 +
      • +
      • + Bug Report Template acfda0a +
      • +
      • + Bug template 516f70c +
      • +
      • + build(pmd): remove updatepmd 0ef9783 +
      • +
      • + feat(scripts): update latest jQuery 992988e +
      • +
      • + fix(lookup): escape=false for record name 5fae8c0 +
      • +
      • + Changelog 6516aa9 +
      • +
      +

      4.2.1 - 2022-05-25

      +

      Merged

      +
        +
      • + Version 4.2.1 #37 +
      • +
      • + Namespace to sample code #36 +
      • +
      • + v4.2.0 #30 +
      • +
      +

      Fixed

      +
        +
      • + Version 4.2.1 (#37) #35 + #34 +
      • +
      • + Namespace to sample code (#36) #35 +
      • +
      +

      Commits

      +
        +
      • + Correct Apex global method syntax eaee330 +
      • +
      • + ApexDox update da133ff +
      • +
      • + Promote v2.4.0.7 70849b9 +
      • +
      • + Changelog, packaging workflow 5b77ddb +
      • +
      • + Packaging workflow 9107fd9 +
      • +
      +

      4.2.0 - 2022-04-01

      +

      Merged

      +
        +
      • + Specify Action Plan Name in Invocable Apex #27 +
      • +
      • + Prettier, JS fixing #26 +
      • +
      • + Highlight.js to 11.5 #25 +
      • +
      • + Add changelog #24 +
      • +
      • + Bump minimist from 1.2.5 to 1.2.6 #23 +
      • +
      • + Upgrading Instructions #22 +
      • +
      • + Add Codecov #21 +
      • +
      +

      Commits

      +
        +
      • + ApexDox remove unused modifiers 3b321db +
      • +
      • + Create codeql-analysis.yml 2822bc5 +
      • +
      • + Highlight inline code security update 57662e7 +
      • +
      • + Pull Request workflow update 2c84f4d +
      • +
      • + Update and rename CONTRIBUTION.md to CONTRIBUTING.md cb7f3c1 +
      • +
      • + update Prettierignore 37aeafa +
      • +
      • + Add link to Apex documentation 96f9cde +
      • +
      • + Sample template update 4c957ca +
      • +
      • + Update CONTRIBUTING.md 9e3b175 +
      • +
      • + Add AppExchange listing to README 760dfc9 +
      • +
      • + Sample flow update 397b763 +
      • +
      +

      4.1.0 - 2022-03-17

      +

      Merged

      +
        +
      • + Release Ready #19 +
      • +
      • + Pre-Release (beta15) #18 +
      • +
      • + Pre-Commit ApexDox cleanup #16 +
      • +
      • + Scripts, Cleanup, New Build #15 +
      • +
      +

      Commits

      +
        +
      • + Update issue templates e2be869 +
      • +
      • + Import file language 5be81e1 +
      • +
      • + Start package versioning via release afd008a +
      • +
      • + ISV toolkit md exclusion 022c65a +
      • +
      • + AppExchange link 31f2e02 +
      • +
      • + Apex highlighting 0609b37 +
      • +
      +

      4.0.0-9 - 2022-02-23

      +

      Merged

      +
        +
      • + AP Task AssignedTo field cleanup #14 +
      • +
      • + Managed vs Unmanaged Project Config #13 +
      • +
      • + Permissions Updates #12 +
      • +
      • + Remove tests from ApexDox #10 +
      • +
      • + Security, code coverage, Print page, Spring 22! #7 +
      • +
      • + Code and documentation cleanup #6 +
      • +
      • + PMD-suggested cleanup #5 +
      • +
      • + Rename Template Task #4 +
      • +
      • + Version 4.0.0.7 #3 +
      • +
      • + Code comment cleanup #2 +
      • +
      • + ApexDocs, Project Files, PMD rules #1 +
      • +
      +

      Commits

      +
        +
      • + Documentation with ApexDox 236c66b +
      • +
      • + Iniital commit, updated for namespace f4d7498 +
      • +
      • + migrate to new sfdx-falcon directory 0cde1dc +
      • +
      • + move to sfdx-source falcon directory structure 2edf46d +
      • +
      • + package files 16c26fc +
      • +
      • + Prettier first pass 9467195 +
      • +
      • + ApexDox 1fc534b +
      • +
      • + ApexDox 48589f7 +
      • +
      • + First commit - ReadMe & Installation 406674a +
      • +
      • + package files 45278ca +
      • +
      • + Install/update prettier 62fd10a +
      • +
      • + Exclude unmanaged and unpackaged metadata 32bcb00 +
      • +
      • + Unmanaged metadata for managed installation ed24492 +
      • +
      • + Remove non-dev org actions 29208d8 +
      • +
      • + Install script for custom setting 11e6b5d +
      • +
      • + Update for EE orgs 83e459d +
      • +
      • + Fix lookup for portal users, custom setting DML dc6ea13 +
      • +
      • + Support unmanaged metadata f8681e8 +
      • +
      • + Add gitignore 433c579 +
      • +
      • + Documentation and support files 9993d83 +
      • +
      • + ApexDox c5c3144 +
      • +
      • + Simplify Account layout 536459a +
      • +
      • + ApexDox 2662ae8 +
      • +
      • + Create first package version 53b252f +
      • +
      • + Org metadata and ignore files 0725de0 +
      • +
      • + Removed TradeStyle to allow installation in regular orgs + fa17e9d +
      • +
      • + Handle ID lists b07c6a7 +
      • +
      • + Works in managed package with unmanaged objects ef595b4 +
      • +
      • + Simplify installation instructions bdb2de3 +
      • +
      • + Readme update, ignore record types 1412184 +
      • +
      • + Fix fieldset test visibility bug 644087e +
      • +
      • + Class and method accessibility 7515c2a +
      • +
      • + Remove debugs 07e4ee7 +
      • +
      • + Release version 4.0.0-6 3f7a3fa +
      • +
      • + Script for working with custom object invocable 9fe7c54 +
      • +
      • + Create custom setting on install c3f795c +
      • +
      • + New task layout c31ec9f +
      • +
      • + Unprotect custom metadata so users can edit f947d4b +
      • +
      • + Beta 3 19ace7e +
      • +
      • + ApexDox 0076c54 +
      • +
      diff --git a/docs/index.html b/docs/index.html index 2838a59d..8c3a19c7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -35,7 +35,11 @@ @@ -46,10 +50,10 @@ @@ -60,7 +64,7 @@ @@ -71,7 +75,7 @@ @@ -85,111 +89,115 @@ - - - -
    @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@ @@ -203,11 +211,11 @@ - @@ -218,16 +226,24 @@ @@ -238,54 +254,58 @@
      - - - @@ -345,7 +365,7 @@

      Installing the App using a Scrat
    • If you haven't already done so, authorize your hub org and provide it with an alias (myhuborg in the command below):

      -
      sfdx auth:web:login -d -a myhuborg
      +              
      sf org login web --set-default --alias myhuborg
       
    • @@ -356,7 +376,7 @@

      Installing the App using a Scrat

    • From the terminal window, run the installation script

      -
      npm run-script scratchorg
      +              
      npm run scratchorg
       

      or

      . scripts/scratchorg.sh
      @@ -376,7 +396,7 @@ 

      sfdx auth:web:login -s -a myorg +
      sf org login web --set-default --alias myorg
       

    • @@ -446,7 +466,7 @@

      sfdx force:apex:execute -f ./data/sample-data.apex +
      sf apex run --file ./data/sample-data.apex
       

    • @@ -473,7 +493,7 @@

      sfdx force:apex:execute -f ./data/sample-data-managed.apex +
      sf apex run --file ./data/sample-data-managed.apex
       

    • From f365d20a84c9e2c4c7fecfda4529f5063350bdfe Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 22:14:08 -0700 Subject: [PATCH 63/70] fix: update install CLI code --- .github/workflows/pr.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 7cb17ff8..25484aa6 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -47,8 +47,7 @@ jobs: npm install sfdx-cli --location=global nodeInstallPath=$(npm config get prefix) echo "$nodeInstallPath/bin" >> $GITHUB_PATH - sf --version - npm install @salesforce/cli --global + sfdx --version # Store secret for dev hub - name: 'Populate auth file with DEVHUB_SFDX_URL secret' From 0e01f8f7ed9b7788adafe0efc03849b3d7cb3081 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 22:18:58 -0700 Subject: [PATCH 64/70] fix: sfdx auth:sfdxurl to sf equivalent --- .github/workflows/pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 25484aa6..9f1be011 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -62,7 +62,7 @@ jobs: # Authenticate dev hub - name: 'Authenticate Dev Hub' - run: sf org delete scratch ./DEVHUB_SFDX_URL.txt --alias devhub --set-default-dev-hub + run: sf org login sfdx-url --sfdx-url-file ./DEVHUB_SFDX_URL.txt --alias devhub --set-default-dev-hub # Add namespace to project config - name: Add namespace to project config From a5539dc63d824636dace2789e10fb537b96b0b61 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 22:49:14 -0700 Subject: [PATCH 65/70] fix(ci): install sfdx and sf CLIs --- .github/workflows/pr.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 9f1be011..bc29f04c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -11,6 +11,10 @@ on: - 'data/**' workflow_dispatch: +concurrency: + group: pr-tests-${{ github.ref }}-1 + cancel-in-progress: true + # Jobs to be executed jobs: check-pmd: @@ -42,13 +46,18 @@ jobs: uses: actions/checkout@v3 # Install Salesforce CLI - - name: 'Install Salesforce CLI' + - name: 'Install Salesforce sfdx CLI' run: | npm install sfdx-cli --location=global nodeInstallPath=$(npm config get prefix) echo "$nodeInstallPath/bin" >> $GITHUB_PATH sfdx --version + - name: 'Install Salesforce sf CLI' + run: | + npm install @salesforce/cli --global + sf --version + # Store secret for dev hub - name: 'Populate auth file with DEVHUB_SFDX_URL secret' shell: bash From 551e0f2d8f784d7d885ccef73cacf941921a33d0 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 22:18:58 -0700 Subject: [PATCH 66/70] fix: sfdx auth:sfdxurl to sf equivalent --- .github/workflows/pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 7cb17ff8..ac2fa3ee 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -63,7 +63,7 @@ jobs: # Authenticate dev hub - name: 'Authenticate Dev Hub' - run: sf org delete scratch ./DEVHUB_SFDX_URL.txt --alias devhub --set-default-dev-hub + run: sf org login sfdx-url --sfdx-url-file ./DEVHUB_SFDX_URL.txt --alias devhub --set-default-dev-hub # Add namespace to project config - name: Add namespace to project config From 3c8b638459149e9577c04547fe51e18a7594d168 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 22:14:08 -0700 Subject: [PATCH 67/70] fix(ci): install sfdx and sf CLIs --- .github/workflows/pr.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ac2fa3ee..bc29f04c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -11,6 +11,10 @@ on: - 'data/**' workflow_dispatch: +concurrency: + group: pr-tests-${{ github.ref }}-1 + cancel-in-progress: true + # Jobs to be executed jobs: check-pmd: @@ -42,13 +46,17 @@ jobs: uses: actions/checkout@v3 # Install Salesforce CLI - - name: 'Install Salesforce CLI' + - name: 'Install Salesforce sfdx CLI' run: | npm install sfdx-cli --location=global nodeInstallPath=$(npm config get prefix) echo "$nodeInstallPath/bin" >> $GITHUB_PATH - sf --version + sfdx --version + + - name: 'Install Salesforce sf CLI' + run: | npm install @salesforce/cli --global + sf --version # Store secret for dev hub - name: 'Populate auth file with DEVHUB_SFDX_URL secret' From 5af2539aa73bb34eebc8768ea208c813be361954 Mon Sep 17 00:00:00 2001 From: David Schach Date: Wed, 15 Mar 2023 23:00:34 -0700 Subject: [PATCH 68/70] remove extra space in installation.md --- INSTALLATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALLATION.md b/INSTALLATION.md index 10789d84..ab742000 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -127,7 +127,7 @@ This repository contains several files that are relevant if you want to add samp - a sample Task layout - a sample report on open Action Plan-related Tasks ```bash - sf deploy metadata --source-dir sfdx-source/unmanaged + sf deploy metadata --source-dir sfdx-source/unmanaged ``` - You can also create other sample Account and Contact records by running the following command: From f2558234f2dd3009d165ed3574819774c14fc358 Mon Sep 17 00:00:00 2001 From: David Schach Date: Thu, 16 Mar 2023 14:17:45 -0700 Subject: [PATCH 69/70] ci(pmd): simplify PMD download Skip storing version in file - use variable only --- .github/workflows/ci.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc5f85b2..1d1a2e8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,16 +54,10 @@ jobs: - name: 'Checkout source code' uses: actions/checkout@v3 - - name: 'Use latest PMD version' - run: | - VERSION=$(curl -s https://api.github.com/repos/pmd/pmd/releases/latest | grep '.tag_name' | sed 's:.*/::' | sed 's:",::') - echo $VERSION - echo -n $VERSION > pmd/pmd-version.txt - # Install PMD - name: 'Install PMD' run: | - PMD_VERSION=`cat pmd/pmd-version.txt` + PMD_VERSION=$(curl -s https://api.github.com/repos/pmd/pmd/releases/latest | grep '.tag_name' | sed 's:.*/::' | sed 's:",::') wget https://github.com/pmd/pmd/releases/download/pmd_releases%2F$PMD_VERSION/pmd-bin-$PMD_VERSION.zip unzip pmd-bin-$PMD_VERSION.zip -d ~ mv ~/pmd-bin-$PMD_VERSION ~/pmd From aea8f73795af90cd0671a25165980ef07734fa19 Mon Sep 17 00:00:00 2001 From: David Schach Date: Sun, 19 Mar 2023 11:37:50 -0700 Subject: [PATCH 70/70] fix(pmd, prettier): remove deprecated commands --- package.json | 10 +++------- pmd/deployRules.xml | 18 +++++++++--------- .../classes/ActionPlanCreationController.cls | 2 +- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 5f07086a..fcf07b1d 100644 --- a/package.json +++ b/package.json @@ -18,16 +18,12 @@ "test:unit:watch": "sfdx-lwc-jest --watch", "test:unit:debug": "sfdx-lwc-jest --debug", "test:unit:coverage": "sfdx-lwc-jest --coverage", - "apex:local:start": "node node_modules/prettier-plugin-apex/dist/bin/start-apex-server.js", - "apex:local:stop": "node node_modules/prettier-plugin-apex/dist/bin/stop-apex-server.js", "apex:test:local": "rm -rf testresults && sf apex run test --detailed-coverage --code-coverage --result-format human --test-level RunLocalTests --wait 20 --output-dir testresults", - "pmd:scan:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/ruleset.xml -f csv -r pmd/pmd.csv --cache .pmdCache --short-names", - "pmd:scan:deploy:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/deployRules.xml -f csv -r pmd/deploy.csv --cache .pmdCache --short-names", - "prettier:apex:local": "prettier --apex-standalone-parser built-in --write \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\"", + "pmd:scan:csv": "$HOME/pmd/bin/run.sh pmd -d sfdx-source -R pmd/ruleset.xml -f csv -r pmd/pmd.csv --cache .pmdCache --relativize-paths-with ./", + "pmd:scan:deploy:csv": "~/pmd/bin/run.sh pmd -d sfdx-source -R pmd/deployRules.xml -f csv -r pmd/deploy.csv --cache .pmdCache --relativize-paths-with ./", "prettier:docs": "prettier --write \"docs/*.html\"", "prettier:package": "prettier --write \"sfdx-source/**/*.{cls,component,page,trigger}\"", - "prettier:verify:apex:local": "prettier --apex-standalone-parser built-in --list-different \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\"", - "prettier:verify": "prettier --list-different \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\" \"docs/*.html\"", + "prettier:verify": "prettier --list-different \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\"", "prettier": "prettier --write \"sfdx-source/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,yaml,yml}\" \"docs/*.html\"", "postinstall": "husky install", "build": ". scripts/packagedev/build.sh", diff --git a/pmd/deployRules.xml b/pmd/deployRules.xml index 1a168538..66b1b456 100644 --- a/pmd/deployRules.xml +++ b/pmd/deployRules.xml @@ -42,26 +42,26 @@ - + - + - + 3 @@ -324,10 +324,10 @@ 3 - - + + diff --git a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls index a09fdeb1..71866594 100644 --- a/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls +++ b/sfdx-source/LabsActionPlans/main/default/classes/ActionPlanCreationController.cls @@ -1,4 +1,4 @@ -@SuppressWarnings('PMD.ExcessivePublicCount') +@SuppressWarnings('PMD.ExcessivePublicCount, PMD.ExcessiveClassLength') /* Action Plans v4 David Schach 2022