diff --git a/gradle.properties b/gradle.properties index 37f983f0ed3..358086a573e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -89,7 +89,7 @@ logbackVersion=1.3.5 lombokVersion=1.18.30 mockitoVersion=4.11.0 luceneVersion=8.11.2 -nodejsVersion=18.17.1 +nodejsVersion=20.9.0 oauthVersion=20100527 orgJsonVersion=20231013 personDirectoryVersion=1.8.11 diff --git a/package-lock.json b/package-lock.json index 1b309aaab5e..f3032b09a78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,20 +5,24 @@ "packages": { "": { "name": "uportal", + "workspaces": [ + "uPortal-webapp/" + ], "devDependencies": { - "eslint": "^8.43.0", - "eslint-config-google": "^0.14.0", - "eslint-config-prettier": "^8.0.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-sonarjs": "^0.23.0", + "eslint-plugin-unicorn": "^49.0.0", "postcss-less": "^6.0.0", "prettier": "~3.0.0", "remark-cli": "^11.0.0", "remark-preset-lint-consistent": "^5.0.0", "remark-preset-lint-recommended": "^6.0.0", "remark-validate-links": "^12.0.0", - "stylelint": "^14.0.0", - "stylelint-config-prettier": "^9.0.0", - "stylelint-config-standard": "^29.0.0", - "stylelint-prettier": "^2.0.0" + "stylelint": "^15.0.0", + "stylelint-config-standard-less": "^2.0.0", + "stylelint-prettier": "^4.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -115,21 +119,21 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, @@ -208,20 +212,90 @@ "node": ">=4" } }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.2.tgz", + "integrity": "sha512-sLYGdAdEY2x7TSw9FtmdaTrh2wFtRJO5VMbBrA8tEqEod7GEggFmxTSK9XqExib3yMuYNcvcTdCZIP6ukdjAIA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { "node": "^14 || ^16 || >=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "peerDependencies": { + "@csstools/css-tokenizer": "^2.2.1" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.1.tgz", + "integrity": "sha512-Zmsf2f/CaEPWEVgw29odOj+WEVoiJy9s9NOv5GgNY9mZ1CZ7394By6wONrONrTsnNDv6F9hR02nvFihrGVGHBg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.5.tgz", + "integrity": "sha512-IxVBdYzR8pYe89JiyXQuYk4aVVoCPhMJkz6ElRwlVysjwURTsTk/bmY/z4FfeRE+CRBMlykPwXEVUg8lThv7AQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz", + "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.10" + "postcss-selector-parser": "^6.0.13" } }, "node_modules/@eslint-community/eslint-utils": { @@ -240,18 +314,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -272,21 +346,21 @@ } }, "node_modules/@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -308,9 +382,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -416,9 +490,9 @@ } }, "node_modules/@npmcli/config": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-6.2.1.tgz", - "integrity": "sha512-Cj/OrSbrLvnwWuzquFCDTwFN8QmR+SWH6qLNCBttUreDkKM5D5p36SeSMbcEUiCGdwjUrVy2yd8C0REwwwDPEw==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-6.4.0.tgz", + "integrity": "sha512-/fQjIbuNVIT/PbXvw178Tm97bxV0E0nVUFKHivMKtSI2pcs8xKdaWkHJxf9dTI0G/y5hp/KuCvgcUu5HwAtI1w==", "dev": true, "dependencies": { "@npmcli/map-workspaces": "^3.0.2", @@ -468,19 +542,19 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -523,109 +597,138 @@ "node": ">=14" } }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pkgr/utils/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/@types/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-t3YCerNM7NTVjLuICZo5gYAXYoDvpuuTceCcFQWcDQz26kxUR5uIWolxbIR5jRNIXpMqhOpW/b8imCR1LEmuJw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.2.tgz", + "integrity": "sha512-hgEx+hdJnfCHa62l6SNHNoe/cRge2HoUZe9KEDwOs2TvyocLTlTuw0rUMiii99kG2avc+BubhNpZ+cu05Gl8oQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "dependencies": { "@types/ms": "*" } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz", + "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==", "dev": true, "dependencies": { "@types/estree": "*" } }, "node_modules/@types/hast": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.5.tgz", - "integrity": "sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.8.tgz", + "integrity": "sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==", "dev": true, "dependencies": { "@types/unist": "^2" } }, "node_modules/@types/is-empty": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.1.tgz", - "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", + "integrity": "sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==", "dev": true }, "node_modules/@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", "dev": true, "dependencies": { "@types/unist": "^2" } }, "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "dev": true }, "node_modules/@types/node": { - "version": "18.17.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.12.tgz", - "integrity": "sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ==", - "dev": true + "version": "18.18.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.9.tgz", + "integrity": "sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "node_modules/@types/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", + "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", "dev": true }, "node_modules/@types/text-table": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.2.tgz", - "integrity": "sha512-dGoI5Af7To0R2XE8wJuc6vwlavWARsCh3UKJPjWs1YEqGUqfgBI/j/4GX0yf19/DsDPPf0YAXWAp8psNeIehLg==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.5.tgz", + "integrity": "sha512-hcZhlNvMkQG/k1vcZ6yHOl6WAYftQ2MLfTHcYRZ2xYZFD8tGVnE3qFV0lj1smQeDSR7/yY0PyuUalauf33bJeA==", "dev": true }, "node_modules/@types/unist": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", - "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, "node_modules/abbrev": { @@ -638,9 +741,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -760,6 +863,15 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -769,6 +881,18 @@ "node": ">=8" } }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -797,6 +921,33 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -807,26 +958,42 @@ } }, "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -898,9 +1065,9 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -912,6 +1079,27 @@ "node": ">=8" } }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/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" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -957,20 +1145,42 @@ "typedarray": "^0.0.6" } }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/cross-spawn": { @@ -988,12 +1198,25 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz", - "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", + "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", "dev": true, "engines": { - "node": ">=12.22" + "node": ">=12 || >=16" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/cssesc": { @@ -1026,12 +1249,15 @@ } }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decamelize-keys": { @@ -1050,6 +1276,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -1078,6 +1313,52 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -1132,6 +1413,19 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -1154,18 +1448,19 @@ } }, "node_modules/eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1207,28 +1502,88 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" }, "peerDependencies": { - "eslint": ">=5.16.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "node_modules/eslint-plugin-sonarjs": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.23.0.tgz", + "integrity": "sha512-z44T3PBf9W7qQ/aR+NmofOTyg6HLhSEZOPD4zhStqBpLoMp8GYhFksuUBnCxbnf1nfISpKBVkQhiBLFI/F4Wlg==", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" + "engines": { + "node": ">=14" }, "peerDependencies": { - "eslint": ">=7.0.0" + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-49.0.0.tgz", + "integrity": "sha512-0fHEa/8Pih5cmzFW5L7xMEfUTvI9WKeQtjmKpTUmY+BiFCDxkxrTdnURJOHKykhtwIeyYsxnecbGvDCml++z4Q==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "@eslint-community/eslint-utils": "^4.4.0", + "ci-info": "^3.8.0", + "clean-regexp": "^1.0.0", + "esquery": "^1.5.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.5.4", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=8.52.0" } }, "node_modules/eslint-scope": { @@ -1318,6 +1673,35 @@ "node": ">=0.10.0" } }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "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": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/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/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1337,9 +1721,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1448,12 +1832,12 @@ } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, @@ -1462,9 +1846,9 @@ } }, "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==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/foreground-child": { @@ -1483,18 +1867,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", @@ -1525,10 +1897,25 @@ } }, "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 + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/github-slugger": { "version": "2.0.0", @@ -1607,9 +1994,9 @@ } }, "node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1647,6 +2034,13 @@ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "optional": true + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -1662,18 +2056,6 @@ "node": ">=6" } }, - "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": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1683,18 +2065,24 @@ "node": ">=8" } }, - "node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "function-bind": "^1.1.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.4" } }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -1707,6 +2095,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -1716,6 +2113,19 @@ "node": ">= 4" } }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -1832,18 +2242,48 @@ "node": ">=4" } }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-empty": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", @@ -1880,6 +2320,24 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -1916,6 +2374,51 @@ "node": ">=0.10.0" } }, + "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, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1923,9 +2426,9 @@ "dev": true }, "node_modules/jackspeak": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.1.tgz", - "integrity": "sha512-4iSY3Bh1Htv+kLhiiZunUhQ+OYXIn0ze3ulq8JeWrFKmhPAJSySV2+kdtRh2pGcCeF0s6oR8Oc+pYZynJj4t8A==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -1958,6 +2461,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -1995,9 +2510,9 @@ } }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -2022,11 +2537,36 @@ } }, "node_modules/known-css-properties": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", "dev": true }, + "node_modules/less": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", + "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "tslib": "^1.10.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "native-request": "^1.0.5", + "source-map": "~0.6.0" + } + }, "node_modules/levenshtein-edit-distance": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz", @@ -2106,13 +2646,40 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "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, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, "engines": { - "node": ">=12" + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" } }, "node_modules/map-obj": { @@ -2252,36 +2819,104 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { "node": ">=10" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "engines": { "node": ">=10" @@ -2290,6 +2925,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2754,6 +3395,31 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -2799,9 +3465,9 @@ } }, "node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -2823,9 +3489,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -2840,6 +3506,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/native-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz", + "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", + "dev": true, + "optional": true + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -2862,42 +3535,24 @@ } }, "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" } }, - "node_modules/normalize-package-data/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/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "bin": { + "semver": "bin/semver" } }, "node_modules/normalize-path": { @@ -2918,6 +3573,33 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "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, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/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, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2927,6 +3609,39 @@ "wrappy": "1" } }, + "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, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -3063,10 +3778,13 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.2.tgz", + "integrity": "sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==", "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, "engines": { "node": "14 || >=16.14" } @@ -3098,6 +3816,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -3147,12 +3875,6 @@ "postcss": "^8.3.5" } }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true - }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", @@ -3248,10 +3970,17 @@ "levenshtein-edit-distance": "^1.0.0" } }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -3278,12 +4007,15 @@ ] }, "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-package-json-fast": { @@ -3401,33 +4133,6 @@ "node": ">=8" } }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", @@ -3457,23 +4162,83 @@ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "picomatch": "^2.2.1" + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dev": true, + "dependencies": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/redent/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/redent/node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", "dev": true, "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "jsesc": "~0.5.0" }, - "engines": { - "node": ">=8" + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" } }, "node_modules/remark": { @@ -4097,6 +4862,27 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-validate-links/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/remark-validate-links/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -4107,9 +4893,9 @@ } }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -4157,6 +4943,116 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/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": { + "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": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/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": ">=10.17.0" + } + }, + "node_modules/run-applescript/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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/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/run-applescript/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, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/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, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/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/run-applescript/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, + "engines": { + "node": ">=6" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4227,18 +5123,6 @@ "node": ">=10" } }, - "node_modules/semver/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, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4261,10 +5145,16 @@ } }, "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 + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/slash": { "version": "3.0.0", @@ -4292,6 +5182,16 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "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, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -4328,9 +5228,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/string_decoder": { @@ -4396,6 +5296,18 @@ "node": ">=8" } }, + "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, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -4427,112 +5339,157 @@ "dev": true }, "node_modules/stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", "dev": true, "dependencies": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", - "css-functions-list": "^3.1.0", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.1", + "css-tree": "^2.3.1", "debug": "^4.3.4", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.1", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^7.0.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.1", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.29.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", + "meow": "^10.1.5", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "picocolors": "^1.0.0", - "postcss": "^8.4.19", - "postcss-media-query-parser": "^0.2.3", + "postcss": "^8.4.28", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", + "postcss-selector-parser": "^6.0.13", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "style-search": "^0.1.0", - "supports-hyperlinks": "^2.3.0", + "supports-hyperlinks": "^3.0.0", "svg-tags": "^1.0.0", "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "write-file-atomic": "^5.0.1" }, "bin": { - "stylelint": "bin/stylelint.js" + "stylelint": "bin/stylelint.mjs" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.13.1 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/stylelint" } }, - "node_modules/stylelint-config-prettier": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz", - "integrity": "sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==", + "node_modules/stylelint-config-recommended": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", + "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", "dev": true, - "bin": { - "stylelint-config-prettier": "bin/check.js", - "stylelint-config-prettier-check": "bin/check.js" - }, "engines": { - "node": ">= 12" + "node": "^14.13.1 || >=16.0.0" }, "peerDependencies": { - "stylelint": ">= 11.x < 15" + "stylelint": "^15.10.0" } }, - "node_modules/stylelint-config-recommended": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-9.0.0.tgz", - "integrity": "sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ==", + "node_modules/stylelint-config-recommended-less": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-less/-/stylelint-config-recommended-less-2.0.0.tgz", + "integrity": "sha512-6X5A9kdusuLzS/9yfkQfzYg5ry43KHXMnUmiPCIidwQEW/cegn44CtRPfN+9SLcVkUVcRNpuLYfHtbLtoUHgkA==", "dev": true, + "dependencies": { + "postcss-less": "^6.0.0", + "stylelint-config-recommended": "^13.0.0", + "stylelint-less": "^2.0.0" + }, "peerDependencies": { - "stylelint": "^14.10.0" + "postcss": "^8.3.3", + "stylelint": "^15.10.2" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } } }, "node_modules/stylelint-config-standard": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-29.0.0.tgz", - "integrity": "sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg==", + "version": "34.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-34.0.0.tgz", + "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==", "dev": true, "dependencies": { - "stylelint-config-recommended": "^9.0.0" + "stylelint-config-recommended": "^13.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" }, "peerDependencies": { - "stylelint": "^14.14.0" + "stylelint": "^15.10.0" } }, - "node_modules/stylelint-prettier": { + "node_modules/stylelint-config-standard-less": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-less/-/stylelint-config-standard-less-2.0.0.tgz", + "integrity": "sha512-hLrK5oNV2Ombs0IC11gzGsYtADX8dquevs+Ls2jY4IY2wywPLnUSW5a5ofxXVan1j1z6OMcs8fWikbpj9Y5VgQ==", + "dev": true, + "dependencies": { + "stylelint-config-recommended-less": "^2.0.0", + "stylelint-config-standard": "^34.0.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^15.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } + } + }, + "node_modules/stylelint-less": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-2.0.0.tgz", - "integrity": "sha512-jvT3G+9lopkeB0ARmDPszyfaOnvnIF+30QCjZxyt7E6fynI1T9mOKgYDNb9bXX17M7PXMZaX3j/26wqakjp1tw==", + "resolved": "https://registry.npmjs.org/stylelint-less/-/stylelint-less-2.0.0.tgz", + "integrity": "sha512-HwRdAdrNDBg64BzIOP3SSHFPJHvRJEpqFn8Kp5m5Enw6pf7kI9XoNT3jn1S2zvfzaK/7hdwy6La3cyJT78fK3A==", + "dev": true, + "dependencies": { + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-value-parser": "4.2.0" + }, + "peerDependencies": { + "postcss": "^8.4.14", + "stylelint": "^15.10.3" + } + }, + "node_modules/stylelint-prettier": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-4.0.2.tgz", + "integrity": "sha512-EoHnR2PiaWgpGtoI4VW7AzneMfwmwQsNwQ+3/E2k/a+ju5yO6rfPfop4vzPQKcJN4ZM1YbspEOPu88D8538sbg==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^14.17.0 || >=16.0.0" }, "peerDependencies": { - "prettier": ">=2.0.0", - "stylelint": ">=14.0.0" + "prettier": ">=3.0.0", + "stylelint": ">=15.8.0" } }, "node_modules/stylelint/node_modules/balanced-match": { @@ -4541,6 +5498,18 @@ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.1.tgz", + "integrity": "sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==", + "dev": true, + "dependencies": { + "flat-cache": "^3.1.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -4563,16 +5532,16 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", "dev": true, "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -4593,6 +5562,28 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", @@ -4637,6 +5628,18 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4664,12 +5667,15 @@ } }, "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/trough": { @@ -4682,6 +5688,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "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", @@ -4712,6 +5724,12 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", @@ -4851,9 +5869,9 @@ } }, "node_modules/unified-engine/node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -4889,15 +5907,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unified-engine/node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/unified-lint-rule": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.2.tgz", @@ -5064,6 +6073,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uportal-webapp": { + "resolved": "uPortal-webapp", + "link": true + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -5097,12 +6119,6 @@ "node": ">=8" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -5392,16 +6408,16 @@ "dev": true }, "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==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/yallist": { @@ -5411,12 +6427,12 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs-parser": { @@ -5449,6 +6465,12 @@ "type": "github", "url": "https://github.com/sponsors/wooorm" } + }, + "uPortal-webapp": { + "name": "uportal-webapp", + "devDependencies": { + "less": "^3.13.0" + } } } } diff --git a/package.json b/package.json index ac1f824b381..72fd37e005a 100644 --- a/package.json +++ b/package.json @@ -2,20 +2,24 @@ "name": "uportal", "private": true, "devDependencies": { - "eslint": "^8.43.0", - "eslint-config-google": "^0.14.0", - "eslint-config-prettier": "^8.0.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-sonarjs": "^0.23.0", + "eslint-plugin-unicorn": "^49.0.0", "postcss-less": "^6.0.0", "prettier": "~3.0.0", "remark-cli": "^11.0.0", "remark-preset-lint-consistent": "^5.0.0", "remark-preset-lint-recommended": "^6.0.0", "remark-validate-links": "^12.0.0", - "stylelint": "^14.0.0", - "stylelint-config-prettier": "^9.0.0", - "stylelint-config-standard": "^29.0.0", - "stylelint-prettier": "^2.0.0" + "stylelint": "^15.0.0", + "stylelint-config-standard-less": "^2.0.0", + "stylelint-prettier": "^4.0.0" }, + "workspaces": [ + "uPortal-webapp/" + ], "scripts": { "lint-js": "eslint . --ignore-path .gitignore --ignore-pattern *.min.js", "lint-less": "stylelint **/*.less !**/bootstrap/**/*.less !**/build/**/*.less", @@ -25,41 +29,39 @@ }, "eslintConfig": { "extends": [ - "google", - "prettier" + "eslint:recommended", + "plugin:sonarjs/recommended", + "plugin:unicorn/recommended", + "plugin:prettier/recommended" ], "env": { "es2023": true, "browser": true }, + "globals": { + "jQuery": false, + "$": false, + "_": false, + "up": false, + "fluid": false + }, "rules": { - "indent": [ + "no-redeclare": [ "error", - 4 - ], - "max-len": [ - "warn", { - "code": 80, - "tabWidth": 4, - "ignoreUrls": true, - "ignoreComments": true, - "ignoreStrings": true + "builtinGlobals": false } ], - "new-cap": "warn", - "arrow-parens": "off", - "constructor-super": "off", - "generator-star-spacing": "off", - "no-new-symbol": "off", - "no-this-before-super": "off", - "no-invalid-this": "off", - "no-var": "off", - "prefer-rest-params": "off", - "prefer-spread": "off", - "valid-jsdoc": "warn", - "rest-spread-spacing": "off", - "yield-star-spacing": "off" + "sonarjs/cognitive-complexity": "off", + "sonarjs/no-duplicate-string": "off", + "unicorn/filename-case": "off", + "unicorn/no-array-callback-reference": "off", + "unicorn/no-for-loop": "off", + "unicorn/no-null": "off", + "unicorn/no-this-assignment": "off", + "unicorn/numeric-separators-style": "off", + "unicorn/prefer-module": "off", + "unicorn/prefer-spread": "off" } }, "remarkConfig": { @@ -71,16 +73,36 @@ "stylelint": { "customSyntax": "postcss-less", "extends": [ - "stylelint-config-standard", + "stylelint-config-standard-less", "stylelint-prettier/recommended" ], "rules": { - "no-invalid-position-at-import-rule": null, + "at-rule-no-unknown": null, + "declaration-block-no-shorthand-property-overrides": null, + "function-no-unknown": null, + "less/no-duplicate-variables": null, + "media-feature-range-notation": [ + "prefix" + ], + "media-query-no-invalid": null, "no-descending-specificity": null, - "selector-id-pattern": null, + "no-invalid-position-at-import-rule": null, + "prettier/prettier": [ + true, + { + "singleQuote": false, + "tabWidth": 2 + } + ], + "property-no-unknown": null, "selector-class-pattern": null, - "function-no-unknown": null + "selector-id-pattern": null } }, - "prettier": {} + "prettier": { + "singleQuote": true, + "bracketSpacing": false, + "trailingComma": "es5", + "tabWidth": 4 + } } diff --git a/uPortal-webapp/package-lock.json b/uPortal-webapp/package-lock.json deleted file mode 100644 index ab98976d511..00000000000 --- a/uPortal-webapp/package-lock.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "name": "uportal-webapp", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "uportal-webapp", - "devDependencies": { - "less": "^3.13.0" - } - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "optional": true - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "node_modules/less": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", - "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", - "dev": true, - "dependencies": { - "copy-anything": "^2.0.1", - "tslib": "^1.10.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/native-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz", - "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", - "dev": true, - "optional": true - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "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, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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 - } - } -} diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/entity-selector.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/entity-selector.js index 2c1674c2c48..13f78a031ab 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/entity-selector.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/entity-selector.js @@ -19,15 +19,15 @@ 'use strict'; var up = up || {}; -(function($, fluid) { +(function ($, fluid) { /** * Private. Returns type from key. * * @param {String} key - reference to entity key. */ - var getTypeFromKey = function(key) { + var getTypeFromKey = function (key) { var separatorIndex = key.indexOf(':'); - return key.substring(0, separatorIndex); + return key.slice(0, Math.max(0, separatorIndex)); }; // end:function. /** @@ -35,8 +35,9 @@ var up = up || {}; * * @param {String} key */ - var getIdFromKey = function(key) { + var getIdFromKey = function (key) { var separatorIndex = key.indexOf(':'); + // eslint-disable-next-line unicorn/prefer-string-slice return key.substring(separatorIndex + 1, key.length); }; // end:function. @@ -45,7 +46,7 @@ var up = up || {}; * * @param {Entity} entity - entity from entity registry */ - var getKey = function(entity) { + var getKey = function (entity) { return entity.entityType + ':' + entity.id; }; @@ -55,20 +56,21 @@ var up = up || {}; * @param {Object} that - reference to an instance of the up.entityselection component. * @param {Object} entity - reference to currently selected entity object. */ - var buildSingleSelectionSnippet = function(that, entity, selected) { - var markup = undefined; + var buildSingleSelectionSnippet = function (that, entity, selected) { + var markup; switch (selected) { - case false: - markup = + case false: { + markup = '' + that.options.messages.nothingSelected + ''; - break; - case true: - markup = + break; + } + case true: { + markup = ''; - break; + break; + } } // end:switch. return markup; @@ -96,22 +99,22 @@ var up = up || {}; * @param {Object} that - reference to an instance of the up.entityselection component. * @param {string} key - key to find in selection Basket for match */ - var updateButtonState = function(button, selectionBasket, that, key) { + var updateButtonState = function (button, selectionBasket, that, key) { button.unbind('click'); - if (selectionBasket.find('a[key=\'' + key + '\']').size() > 0) { + if (selectionBasket.find("a[key='" + key + "']").size() > 0) { button .text('Remove from Selection ') - .append(''); + .append(""); button.removeClass('btn-success').addClass('btn-danger'); - button.bind('click', function(e) { + button.bind('click', function () { deselectEntity(that, key); }); } else { button .text('Add to Selection ') - .append(''); + .append(""); button.removeClass('btn-danger').addClass('btn-success'); - button.bind('click', function(e) { + button.bind('click', function () { selectEntity(that, key); }); } @@ -123,7 +126,7 @@ var up = up || {}; * * @param {Object} that - reference to an instance of the up.entityselection component. */ - var updateSelectionStates = function(that) { + var updateSelectionStates = function (that) { var content; var selectionBasket; var button; @@ -139,7 +142,7 @@ var up = up || {}; // Check ad hoc groups table. content = that.locate('entityBrowserContent'); - content.find('button.btn-select').each(function() { + content.find('button.btn-select').each(function () { key = $(this).attr('key'); updateButtonState($(this), selectionBasket, that, key); }); @@ -151,7 +154,7 @@ var up = up || {}; * @param {Object} that - reference to an instance of the up.entityselection component. * @param {String} key - reference to passed anchor tag attribute. ex: group:local.17 */ - var deselectEntity = function(that, key) { + var deselectEntity = function (that, key) { var selectionBasket; var entity; var buttonPrimary; @@ -168,31 +171,38 @@ var up = up || {}; // Check component selection mode. switch (that.selectMultiple) { - case false: // Single. - that.options.selected = []; - selectionBasket.html( - buildSingleSelectionSnippet(that, entity, false) - ); - break; - case true: // Multiple. - // Generate a new list of selected entities. Remove the requested - // entity from the selection basket. - selectionBasket.find('a').each(function() { - var a = $(this); - if (a.attr('key') !== key) { - newselections.push(a.attr('key')); - } else { - a.parent().remove(); - } // end:if. - }); // end:loop. - that.options.selected = newselections; - break; + case false: { + // Single. + that.options.selected = []; + selectionBasket.html( + buildSingleSelectionSnippet(that, entity, false) + ); + break; + } + case true: { + // Multiple. + // Generate a new list of selected entities. Remove the requested + // entity from the selection basket. + selectionBasket.find('a').each(function () { + var a = $(this); + if (a.attr('key') === key) { + a.parent().remove(); + } else { + newselections.push(a.attr('key')); + } // end:if. + }); // end:loop. + that.options.selected = newselections; + break; + } } // end:switch. updateSelectionStates(that); // Enable submit. - if (that.options.selected.length < 1 && that.options.requireSelection) { + if ( + that.options.selected.length === 0 && + that.options.requireSelection + ) { buttonPrimary.attr('disabled', 'disabled'); } // end:if. }; // end:function. @@ -203,7 +213,7 @@ var up = up || {}; * @param {Object} that - reference to an instance of the up.entityselection component. * @param {String} key - reference to currrently 'selected' entity. ex: group:local.17 */ - var selectEntity = function(that, key) { + var selectEntity = function (that, key) { var selectionBasket; var buttonPrimary; var li; @@ -219,48 +229,52 @@ var up = up || {}; // Check component selection mode. switch (that.selectMultiple) { - case false: // Single. - that.options.selected = []; - that.options.selected.push(key); - selectionBasket.html( - buildSingleSelectionSnippet(that, entity, true) - ); - - // Assign click event. - selectionBasket.find('a').click(function() { + case false: { + // Single. that.options.selected = []; + that.options.selected.push(key); selectionBasket.html( - buildSingleSelectionSnippet(that, entity, false) + buildSingleSelectionSnippet(that, entity, true) ); - deselectEntity(that, $(this).attr('key')); - }); // end:click. - break; - case true: // Multiple. - // If 'key' does not exist within 'selected' arrary. - if ($.inArray(key, that.options.selected) < 0) { - // Add the key to our selected list. - that.options.selected.push(key); - // Add an element to the user-visible select list. - li = $( - '
  • ' + entity.name + '
  • ' - ); + ); - // Append li to selectionBasket. - selectionBasket.find('ul').append(li); + // Append li to selectionBasket. + selectionBasket.find('ul').append(li); - // Assign click event. - li.find('a').click(function() { - deselectEntity(that, $(this).attr('key')); - }); // end:click. - } // end:if. - break; + // Assign click event. + li.find('a').click(function () { + deselectEntity(that, $(this).attr('key')); + }); // end:click. + } // end:if. + break; + } } // end:switch. updateSelectionStates(that); @@ -276,7 +290,7 @@ var up = up || {}; * @param {Object} anchor - reference to element. @ @param {Function} browseFn - function to associate with anchor */ - var removeBreadCrumb = function(that, anchor, browseFn) { + var removeBreadCrumb = function (that, anchor, browseFunction) { var crumb; var next; @@ -288,7 +302,7 @@ var up = up || {}; next.remove(); // Render view associated with the 'clicked' crumb. - browseFn(that, anchor.attr('key')); + browseFunction(that, anchor.attr('key')); }; // end:function. /** @@ -299,12 +313,12 @@ var up = up || {}; * @param {Object} breadcrumbs - DOM object of breadcrumbs @ @param {Function} browseFn - function to associate with anchor */ - var buildBreadCrumb = function( + var buildBreadCrumb = function ( that, key, entityName, breadcrumbs, - browseFn + browseFunction ) { var breadcrumb; breadcrumb = @@ -321,8 +335,8 @@ var up = up || {}; breadcrumbs .find('a') .unbind('click') - .click(function() { - removeBreadCrumb(that, $(this), browseFn); + .click(function () { + removeBreadCrumb(that, $(this), browseFunction); }); // end:click. }; // end:function. @@ -334,7 +348,12 @@ var up = up || {}; * @param {String} breadcrumbsSel - selector name of breadcrumb @ @param {Function} browseFn - function to associate with anchor */ - var updateBreadcrumbs = function(that, entity, breadcrumbsSel, browseFn) { + var updateBreadcrumbs = function ( + that, + entity, + breadcrumbsSel, + browseFunction + ) { var breadcrumbs; var key; var isKey; @@ -347,15 +366,27 @@ var up = up || {}; if (breadcrumbs.find('span').length > 0) { // Breadcrumbs do exist. isKey = - breadcrumbs.find('span a[key="' + key + '"]').length > 0 ? - true : - false; + breadcrumbs.find('span a[key="' + key + '"]').length > 0 + ? true + : false; if (!isKey) { - buildBreadCrumb(that, key, entity.name, breadcrumbs, browseFn); + buildBreadCrumb( + that, + key, + entity.name, + breadcrumbs, + browseFunction + ); } // end:if. } else { // No breadcrumbs exist. - buildBreadCrumb(that, key, entity.name, breadcrumbs, browseFn); + buildBreadCrumb( + that, + key, + entity.name, + breadcrumbs, + browseFunction + ); } // end:if. // Add the '.last' class name to the last availble breadcrumb. @@ -375,7 +406,7 @@ var up = up || {}; * @param {Object} that - reference to an instance of the up.entityselection component. * @param {String} key - reference to currently 'focused' group key. ex: group:pags.Ad%20Hoc%20Groups */ - var browseEntity = function(that, key) { + var browseEntity = function (that, key) { console.log('browse ad hoc'); var entity; var currentEntityName; @@ -396,14 +427,12 @@ var up = up || {}; // Clear member tables. content = that.locate('entityBrowserContent'); - content.find('table').each(function() { - $(this) - .html('') - .hide(); + content.find('table').each(function () { + $(this).html('').hide(); }); // For each entity, create a member list item. - $.each(entity.children, function(idx, obj) { + $.each(entity.children, function (index, object) { var tdChild; var tdButtons; var divButtons; @@ -412,40 +441,40 @@ var up = up || {}; var tr; var table; var a; - var objType; + var objectType; - objType = obj.entityType.toLowerCase(); + objectType = object.entityType.toLowerCase(); // Create entity name/link. - if (objType == 'person' || objType == 'portlet') { + if (objectType == 'person' || objectType == 'portlet') { a = document.createElement('span'); - a.textContent = obj.name; + a.textContent = object.name; } else { a = document.createElement('a'); a.href = 'javascript:;'; - a.text = obj.name; - a.setAttribute('key', getKey(obj)); + a.text = object.name; + a.setAttribute('key', getKey(object)); } a.className = that.options.styles.memberLink; // Create entity td. tdChild = document.createElement('td'); - tdChild.appendChild(a); + tdChild.append(a); // Create buttons, div and td. selButton = document.createElement('button'); selButton.className = 'btn btn-select btn-success btn-xs'; - selButton.setAttribute('key', getKey(obj)); - selButton.appendChild(document.createTextNode('Add to Selection ')); + selButton.setAttribute('key', getKey(object)); + selButton.append(document.createTextNode('Add to Selection ')); selIcon = document.createElement('i'); selIcon.className = 'fa fa-plus-circle'; - selButton.appendChild(selIcon); + selButton.append(selIcon); divButtons = document.createElement('div'); divButtons.className = 'btn-group pull-right'; divButtons.role = 'group'; - divButtons.appendChild(selButton); + divButtons.append(selButton); tdButtons = document.createElement('td'); - tdButtons.appendChild(divButtons); + tdButtons.append(divButtons); /* @@ -453,27 +482,22 @@ var up = up || {}; // Create row and add to table. tr = document.createElement('tr'); - tr.appendChild(tdChild); - tr.appendChild(tdButtons); + tr.append(tdChild); + tr.append(tdButtons); table = content - .find('.' + objType) + .find('.' + objectType) .find('.' + that.options.styles.memberList); table.append(tr); table.show(); }); // end:loop. // Reset no-members. - that.container.find('.no-members').each(function(idx, obj) { - obj = $(obj); - if ( - obj - .parent() - .find('tr') - .size() > 0 - ) { - obj.hide(); + that.container.find('.no-members').each(function (index, object) { + object = $(object); + if (object.parent().find('tr').size() > 0) { + object.hide(); } else { - obj.show(); + object.show(); } }); @@ -481,7 +505,7 @@ var up = up || {}; content .find('table') .find('a') - .click(function() { + .click(function () { browseEntity(that, $(this).attr('key')); }); // end:click. @@ -494,22 +518,19 @@ var up = up || {}; * * @param {Object} that - reference to an instance of the up.entityselection component. */ - var updateSearchView = function(that) { + var updateSearchView = function (that) { var list; // Cache. list = that.searchDropDown.find(that.options.selectors.searchResults); - list - .find('.' + that.options.styles.selected) - .removeClass(that.options.styles.selected); + list.find('.' + that.options.styles.selected).removeClass( + that.options.styles.selected + ); // Loop through selected array. - $.each(that.options.selected, function(idx, obj) { - var span = list.find('span[key="' + obj + '"]'); - span - .parent() - .parent() - .addClass(that.options.styles.selected); + $.each(that.options.selected, function (index, object) { + var span = list.find('span[key="' + object + '"]'); + span.parent().parent().addClass(that.options.styles.selected); }); // end:loop. }; // end:function. @@ -519,7 +540,7 @@ var up = up || {}; * @param {Object} that - reference to an instance of the up.entityselection component. * @param {String} key - reference to key attribute passed over when search link is clicked. */ - var itemSelectionHandler = function(that, key) { + var itemSelectionHandler = function (that, key) { // Cache. var entity = that.registry.getEntity( getTypeFromKey(key), @@ -528,12 +549,12 @@ var up = up || {}; console.log(entity); // Selection. - if ($.inArray(key, that.options.selected) !== -1) { - // Key exists. - deselectEntity(that, getKey(entity)); - } else { + if ($.inArray(key, that.options.selected) === -1) { // Key does not exist. selectEntity(that, getKey(entity)); + } else { + // Key exists. + deselectEntity(that, getKey(entity)); } // end:if. // Update UI. @@ -546,7 +567,7 @@ var up = up || {}; * @param {Object} that - reference to an instance of the up.entityselection component. * @param {String} searchTerm - reference to search term. */ - var search = function(that, searchTerm, form) { + var search = function (that, searchTerm) { var entities; var list; var listItem; @@ -569,22 +590,22 @@ var up = up || {}; listItem = ''; // Loop through each entity. Build list items. - $.each(entities, function(idx, obj) { + $.each(entities, function (index, object) { listItem += '
  • ' + - obj.name + + object.name + '
  • '; }); // end:loop. list.html(listItem); // Assign default 'click' event. - list.find('a').bind('click', function() { + list.find('a').bind('click', function () { var span = $(this).find('span'); console.log(span.attr('key')); itemSelectionHandler(that, span.attr('key')); @@ -592,7 +613,7 @@ var up = up || {}; // Render 'No Members' when list is empty. members = list.find('li'); - if (members.length < 1) { + if (members.length === 0) { searchResultsNoMembers.show(); list.hide(); } else { @@ -612,7 +633,7 @@ var up = up || {}; * * @param {Object} that - reference to an instance of the up.entityselection component. */ - var searchEntity = function(that) { + var searchEntity = function (that) { var closeSearch; var searchForm; var searchField; @@ -630,25 +651,25 @@ var up = up || {}; searchDropDown.css({top: searchField.outerHeight()}); // Binds 'submit' event. - searchForm.submit(function() { + searchForm.submit(function () { up.showLoader(loader); - search(that, searchField.val(), searchForm); + search(that, searchField.val()); searchDropDown.show(); up.hideLoader(loader); return false; }); // end:listener. // Binds 'click' event to close button. - closeSearch.find('a').bind('click', function() { + closeSearch.find('a').bind('click', function () { searchDropDown.hide(); }); // end:listener. // Binds 'click' event listener to the document. Detects a 'click' // that occurs outside of the component. - $(document).bind('click', function(e) { + $(document).bind('click', function (event) { if ( that.isEmptyArray( - $(e.target).parents('.' + that.options.styles.search) + $(event.target).parents('.' + that.options.styles.search) ) ) { searchDropDown.hide(); @@ -656,12 +677,12 @@ var up = up || {}; }); // end:function. }; // end:function. - var createTestMaps = function(groupNames, testAttr) { + var createTestMaps = function (groupNames, testAttribute) { var tests = []; - $.each(groupNames, function(i, name) { + $.each(groupNames, function (index, name) { tests.push({ testValue: name, - attributeName: testAttr, + attributeName: testAttribute, testerClassName: 'org.apereo.portal.groups.pags.testers.AdHocGroupTester', }); @@ -674,14 +695,13 @@ var up = up || {}; * * @param {Object} that - reference to an instance of the up.entityselection component. */ - var initialize = function(that) { + var initialize = function (that) { // Initialize search drop-down. searchEntity(that); - that - .locate('selectionBasket') + that.locate('selectionBasket') .find('a') - .click(function() { + .click(function () { deselectEntity(that, $(this).attr('key')); }); // end:click. @@ -692,9 +712,9 @@ var up = up || {}; var jsTreeIncludes = false; var jsTreeExcludes = false; - var entityToJSTreeNode = function(entity) { + var entityToJSTreeNode = function (entity) { var childNodes = []; - $.each(entity.children, function(idx, child) { + $.each(entity.children, function (index, child) { if (child.entityType == 'GROUP') { childNodes.push({ id: getKey(child), @@ -710,11 +730,11 @@ var up = up || {}; }; }; - var callback = function(obj, cb) { + var callback = function (object, callback_) { var key; var entity; var childNodes = []; - if (obj.id === '#') { + if (object.id === '#') { // root tree node, so send back initial node key = that.options.initialFocusedEntity; entity = that.registry.getEntity( @@ -723,46 +743,55 @@ var up = up || {}; ); childNodes.push(entityToJSTreeNode(entity)); } else { - key = obj.id; + key = object.id; entity = that.registry.getEntity( getTypeFromKey(key), getIdFromKey(key) ); - $.each(entity.children, function(idx, child) { + $.each(entity.children, function (index, child) { if (child.entityType == 'GROUP') { childNodes.push(entityToJSTreeNode(child)); } }); } - cb.call(this, childNodes); + callback_.call(this, childNodes); }; - var displayResponseMessage = function(xmlhttp) { + var displayResponseMessage = function (xmlhttp) { console.log('display response message'); console.log(xmlhttp.responseText); switch (xmlhttp.status) { - case 200: // SC_OK - case 201: // SC_CREATED - case 202: // SC_ACCEPTED - $(that.options.selectors.alertSuccess).show(); - break; - case 400: // SC_BAD_REQUEST -> bad parent - $(that.options.selectors.alertInvalidParent).show(); - break; - case 409: // SC_CONFLICT -> group exists - $(that.options.selectors.alertGroupExists).show(); - break; - case 401: // SC_UNAUTHORIZED - case 403: // SC_FORBIDDEN - $(that.options.selectors.alertUnauthorized).show(); - break; - default: - $(that.options.selectors.alertUnknown).show(); - break; + case 200: // SC_OK + case 201: // SC_CREATED + case 202: { + // SC_ACCEPTED + $(that.options.selectors.alertSuccess).show(); + break; + } + case 400: { + // SC_BAD_REQUEST -> bad parent + $(that.options.selectors.alertInvalidParent).show(); + break; + } + case 409: { + // SC_CONFLICT -> group exists + $(that.options.selectors.alertGroupExists).show(); + break; + } + case 401: // SC_UNAUTHORIZED + case 403: { + // SC_FORBIDDEN + $(that.options.selectors.alertUnauthorized).show(); + break; + } + default: { + $(that.options.selectors.alertUnknown).show(); + break; + } } }; - that.locate('saveAdHocButton').bind('click', function(e) { + that.locate('saveAdHocButton').bind('click', function () { var parentKey; var parentName; var includes; @@ -774,17 +803,15 @@ var up = up || {}; parentKey = that.locate('currentEntityName').attr('key'); parentName = that.locate('currentEntityName').text(); includes = []; - that - .locate('dataIncludesList') + that.locate('dataIncludesList') .find('li') - .each(function() { + .each(function () { includes.push($(this).text()); }); excludes = []; - that - .locate('dataExcludesList') + that.locate('dataExcludesList') .find('li') - .each(function() { + .each(function () { excludes.push($(this).text()); }); @@ -800,7 +827,7 @@ var up = up || {}; console.log(json); xmlhttp = new XMLHttpRequest(); - xmlhttp.onreadystatechange = function() { + xmlhttp.addEventListener('readystatechange', function () { if (xmlhttp.readyState == 4) { if (xmlhttp.status >= 200 && xmlhttp.status <= 202) { that.registry.removeEntity(parentKey); @@ -808,7 +835,7 @@ var up = up || {}; } displayResponseMessage(xmlhttp); } - }; + }); xmlhttp.open( 'POST', that.options.pagsApiUrl + parentName + '.json', @@ -819,7 +846,7 @@ var up = up || {}; $(that.options.selectors.adHocGroupsModal).on( 'show.bs.modal', - function() { + function () { $(that.options.selectors.alerts).hide(); // Initialize jsTree widgets within this dialog only when shown and only once @@ -854,7 +881,10 @@ var up = up || {}; } // Disable primary button. - if (that.options.selected.length < 1 && that.options.requireSelection) { + if ( + that.options.selected.length === 0 && + that.options.requireSelection + ) { that.locate('buttonPrimary').attr('disabled', 'disabled'); } // end:if. }; // end:function. @@ -865,7 +895,7 @@ var up = up || {}; * @param {Object} container - reference to DOM container. * @param {Object} options - reference to configuration object. */ - up.entityselection = function(container, options) { + up.entityselection = function (container, options) { var that; // Initialize component & cache globals. @@ -885,8 +915,8 @@ var up = up || {}; * * @param {Object} arr - reference to passed array object. */ - that.isEmptyArray = function(arr) { - return arr.length > 0 ? false : true; + that.isEmptyArray = function (array) { + return array.length > 0 ? false : true; }; // end:function. initialize(that); diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/flyout-nav.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/flyout-nav.js index 1a4a47e5730..b6b1897fb3a 100755 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/flyout-nav.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/flyout-nav.js @@ -18,15 +18,15 @@ */ var uportal = uportal || {}; -(function($, fluid) { +(function ($, fluid) { /** * Initialize the flyout menu item */ - var init = function(that) { + var init = function (that) { zIndexWorkaround(that); // set the mouseover event - $(that.container).mouseover(function() { + $(that.container).mouseover(function () { var tab; var flyout; var flyoutList; @@ -46,36 +46,32 @@ var uportal = uportal || {}; // Horizontal. if (that.options.orientation === 'horizontal') { // Left. - if (that.options.horzalign === 'left') { - foLeft = 0; - } else { - foLeft = tab.outerWidth() - flyout.outerWidth(); - } // end:if. + foLeft = + that.options.horzalign === 'left' + ? 0 + : tab.outerWidth() - flyout.outerWidth(); // end:if. // Bottom. - if (that.options.vertalign === 'bottom') { - foTop = tab.outerHeight() - that.options.offset; - } else { - foTop = flyout.outerHeight() * -1; - } // end:if. + foTop = + that.options.vertalign === 'bottom' + ? tab.outerHeight() - that.options.offset + : flyout.outerHeight() * -1; // end:if. } else { // Left. - if (that.options.horzalign === 'left') { - foLeft = flyout.outerWidth() * -1; - } else { - foLeft = tab.outerWidth(); - } // end:if. + foLeft = + that.options.horzalign === 'left' + ? flyout.outerWidth() * -1 + : tab.outerWidth(); // end:if. // Bottom. - if (that.options.vertalign === 'bottom') { - foTop = 0; - } else { - foTop = (flyout.outerHeight() - tab.outerHeight()) * -1; - } // end:if. + foTop = + that.options.vertalign === 'bottom' + ? 0 + : (flyout.outerHeight() - tab.outerHeight()) * -1; // end:if. } // end:if. // set the mouseout event - $(that.container).mouseout(function() { + $(that.container).mouseout(function () { that.closeFlyout(); }); @@ -95,50 +91,45 @@ var uportal = uportal || {}; * * From http://richa.avasthi.name/blogs/tepumpkin/2008/01/11/ie7-lessons-learned/ */ - var zIndexWorkaround = function(that) { - if ($.browser.msie) { - if ($.browser.version === '7.0') { - // Iterate over the parents of the flyout containers - that - .locate('flyoutMenu') - .parents() - .each(function() { - var p = $(this); - var pos = p.css('position'); - - // If it's positioned, - if ( - pos == 'relative' || - pos == 'absolute' || - pos == 'fixed' - ) { - /* + var zIndexWorkaround = function (that) { + if ($.browser.msie && $.browser.version === '7.0') { + // Iterate over the parents of the flyout containers + that.locate('flyoutMenu') + .parents() + .each(function () { + var p = $(this); + var pos = p.css('position'); + + // If it's positioned, + if ( + pos == 'relative' || + pos == 'absolute' || + pos == 'fixed' + ) { + /* * Add the "on-top" class name This class is defined in: * uportal-war/src/main/webapp/media/skins/universality/common/css/layout-portal.css */ - $(this).addClass(that.options.styles.onTop); - } - }); - - return; - } // end:if. - } // end:if. + $(this).addClass(that.options.styles.onTop); + } + }); + } // end:if. // end:if. }; /** * Create a new flyout menu component */ - uportal.flyoutmenu = function(container, options) { + uportal.flyoutmenu = function (container, options) { var that = fluid.initView('uportal.flyoutmenu', container, options); // initialize the flyout menu init(that); - that.openFlyout = function() { + that.openFlyout = function () { that.locate('flyoutMenu').show(); }; - that.closeFlyout = function() { + that.closeFlyout = function () { that.locate('flyoutMenu').hide(); }; }; diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-autocomplete.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-autocomplete.js index 18a8b4528bf..490016cfea2 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-autocomplete.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-autocomplete.js @@ -19,8 +19,8 @@ 'use strict'; var up = up || {}; -(function($, fluid) { - up.Autocomplete = function(container, options) { +(function ($, fluid) { + up.Autocomplete = function (container, options) { var that = fluid.initView('up.Autocomplete', container, options); that.state = that.state || {}; @@ -30,7 +30,7 @@ var up = up || {}; {id: 'matchText', selector: that.options.selectors.matchText}, ]; - that.search = function() { + that.search = function () { that.locate('input').removeClass('up-autocomplete-validinput'); that.locate('dropdown').show(); @@ -39,7 +39,7 @@ var up = up || {}; ); var tree = {children: []}; - $(results).each(function(idx, result) { + $(results).each(function (index, result) { tree.children.push({ ID: 'match:', children: [ @@ -49,15 +49,13 @@ var up = up || {}; { type: 'jQuery', func: 'click', - args: function() { + args: function () { that.locate('input').val(result.text); that.state.currentValue = result.value; that.locate('dropdown').hide(); - that - .locate('input') - .addClass( - 'up-autocomplete-validinput' - ); + that.locate('input').addClass( + 'up-autocomplete-validinput' + ); }, }, ], @@ -72,29 +70,33 @@ var up = up || {}; that.state.templates, that.locate('matches'), tree, - {cutpoints: cutpoints} + { + cutpoints: cutpoints, + } ); } else { that.state.templates = fluid.selfRender( that.locate('matches'), tree, - {cutpoints: cutpoints} + { + cutpoints: cutpoints, + } ); } that.locate('loadingMessage').hide(); }; - that.getValue = function() { + that.getValue = function () { return that.state.currentValue; }; - that.locate('close').click(function() { + that.locate('close').click(function () { that.locate('dropdown').hide(); }); that.locate('input').keyup(that.search); // remove the initial instructional text when the input is focused - that.locate('input').focus(function() { + that.locate('input').focus(function () { var text = that.locate('input').val(); if (text == that.options.initialText) { that.locate('input').val(''); @@ -102,7 +104,7 @@ var up = up || {}; }); // replace the initial instruction text if no option is selected - that.locate('input').blur(function() { + that.locate('input').blur(function () { var text = that.locate('input').val(); if (text == '') { that.locate('input').val(that.options.initialText); diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-config-lightbox.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-config-lightbox.js index 0352def8fd3..67d7a7cbe28 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-config-lightbox.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-config-lightbox.js @@ -20,11 +20,11 @@ var up = up || {}; up.lightboxConfig = up.lightboxConfig || - (function(window, $) { + (function (window, $) { 'use strict'; var init; - var defaultOpts; + var defaultOptions; var processAjaxResponse; var convertExclusiveUrlToPageUrl; @@ -40,19 +40,19 @@ up.lightboxConfig = * @param url the url to update * @return the updated URL as a string. */ - convertExclusiveUrlToPageUrl = function(url) { + convertExclusiveUrlToPageUrl = function (url) { var newUrl; var matches; var currentPagePortletId; var portletId; var state; - matches = /\/p\/([^\/]+)\//.exec(window.location.pathname); + matches = /\/p\/([^/]+)\//.exec(window.location.pathname); if (matches && matches[1]) { currentPagePortletId = matches[1]; } - matches = /\/p\/([^\/]+)\//.exec(url); + matches = /\/p\/([^/]+)\//.exec(url); if (matches && matches[1]) { portletId = matches[1]; } @@ -62,9 +62,10 @@ up.lightboxConfig = // portlet in a region, have to switch back to normal mode. This is // not ideal, but it's very similar to what the happens now anyhow. if (currentPagePortletId && portletId === currentPagePortletId) { - matches = /\/(normal|maximized|exclusive|detached)\/render.uP/.exec( - window.location.pathname - ); + matches = + /\/(normal|maximized|exclusive|detached)\/render.uP/.exec( + window.location.pathname + ); if (matches && matches[1]) { state = matches[1]; } @@ -82,13 +83,13 @@ up.lightboxConfig = * @param conf the lightbox configuration * @param content the portlet content as a string. */ - processAjaxResponse = function(conf, content) { - var tempHtml = $('
    ').html(content); + processAjaxResponse = function (config, content) { + var temporaryHtml = $('
    ').html(content); // rewrite action URL on all forms... - $(tempHtml) + $(temporaryHtml) .find('form') - .each(function(idx, form) { + .each(function (index, form) { var action; var $form; @@ -98,9 +99,9 @@ up.lightboxConfig = }); // rewrite href attr on all links. - $(tempHtml) + $(temporaryHtml) .find('a') - .each(function(idx, a) { + .each(function (index, a) { var href; var $a; @@ -113,15 +114,13 @@ up.lightboxConfig = }); // once URLS are fixed, attach the content. - $(conf.selectors.content) - .empty() - .append(tempHtml); + $(config.selectors.content).empty().append(temporaryHtml); }; /** * Overridable options that can be passed to init. */ - defaultOpts = { + defaultOptions = { selectors: { editLinks: '[data-lightbox-url]', lightbox: '#config-lightbox', @@ -140,51 +139,51 @@ up.lightboxConfig = * * @param config custom options (optional) */ - init = function(config) { - var conf; - var pageLoadedFn; - var pageLoadErrorFn; + init = function (config) { + var config_; + var pageLoadedFunction; + var pageLoadErrorFunction; - conf = $.extend(true, defaultOpts, config); + config_ = $.extend(true, defaultOptions, config); - $(conf.selectors.editLinks).click(function(evt) { + $(config_.selectors.editLinks).click(function (event_) { var url; var title; var promise; - evt.preventDefault(); - evt.stopPropagation(); + event_.preventDefault(); + event_.stopPropagation(); - url = $(evt.currentTarget).data('lightboxUrl'); - title = $(evt.currentTarget).data('lightboxTitle'); + url = $(event_.currentTarget).data('lightboxUrl'); + title = $(event_.currentTarget).data('lightboxTitle'); - pageLoadedFn = function(content) { - processAjaxResponse(conf, content); + pageLoadedFunction = function (content) { + processAjaxResponse(config_, content); - $(conf.selectors.loading).fadeOut(); - $(conf.selectors.content).fadeIn(); + $(config_.selectors.loading).fadeOut(); + $(config_.selectors.content).fadeIn(); }; - pageLoadErrorFn = function() { + pageLoadErrorFunction = function () { // if the ajax call fails, revert to the classic, inline method // for handling configuration - window.location.href = $(evt.currentTarget).attr('href'); + window.location.href = $(event_.currentTarget).attr('href'); }; if (title) { - $(conf.selectors.title).text(title); + $(config_.selectors.title).text(title); } - $(conf.selectors.content).hide(); - $(conf.selectors.loading).show(); - $(conf.selectors.lightbox).modal(conf.lightboxOptions); + $(config_.selectors.content).hide(); + $(config_.selectors.loading).show(); + $(config_.selectors.lightbox).modal(config_.lightboxOptions); promise = $.ajax({ url: url, contentType: 'text/html', }); - promise.then(pageLoadedFn, pageLoadErrorFn); + promise.then(pageLoadedFunction, pageLoadErrorFunction); return false; }); diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-entity-registry.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-entity-registry.js index c02aaa5c971..08db8ef7352 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-entity-registry.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-entity-registry.js @@ -19,14 +19,14 @@ 'use strict'; var up = up || {}; -(function($, fluid) { +(function ($, fluid) { /** * Instantiate a PortletRegistry component * * @param {Object} container Container the element containing the fragment browser * @param {Object} options configuration options for the components */ - up.EntityRegistry = function(container, options) { + up.EntityRegistry = function (container, options) { // construct the new component var that = fluid.initView('up.EntityRegistry', container, options); @@ -37,7 +37,7 @@ var up = up || {}; // PUBLIC METHODS // -------------------------------------------------- - that.searchEntities = function(entityTypes, searchTerm) { + that.searchEntities = function (entityTypes, searchTerm) { var url; var entities; url = that.options.entitiesUrl + '.json'; @@ -48,7 +48,7 @@ var up = up || {}; type: 'GET', dataType: 'json', data: {entityType: entityTypes, q: searchTerm}, - success: function(json) { + success: function (json) { entities = json.jsonEntityBeanList; }, }); @@ -56,7 +56,7 @@ var up = up || {}; return entities; }; - that.getEntity = function(entityType, entityId) { + that.getEntity = function (entityType, entityId) { var fullId; var url; var entity; @@ -80,7 +80,7 @@ var up = up || {}; url: url, type: 'GET', dataType: 'json', - success: function(json) { + success: function (json) { that.state.entityCache[fullId] = json.jsonEntityBean; entity = json.jsonEntityBean; }, @@ -89,7 +89,7 @@ var up = up || {}; return entity; }; - that.removeEntity = function(key) { + that.removeEntity = function (key) { if (that.state.entityCache[key]) { delete that.state.entityCache[key]; } diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-favorite.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-favorite.js index 112ccd3975c..0265e361e24 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-favorite.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-favorite.js @@ -18,7 +18,7 @@ */ var up = up || {}; -(function($) { +(function ($) { up.addToFavorite = function addToFavoritesFunction(event) { var portletId = event.data.portletId; var context = event.data.context; @@ -31,13 +31,13 @@ var up = up || {}; data: null, dataType: 'json', async: true, - success: function(request, text) { + success: function (request) { $('#up-notification').noty({ text: request.response, type: 'success', }); }, - error: function(request, text, error) { + error: function (request) { $('#up-notification').noty({ text: request.responseJSON.response, type: 'error', @@ -58,13 +58,13 @@ var up = up || {}; data: null, dataType: 'json', async: true, - success: function(request, text) { + success: function (request) { $('#up-notification').noty({ text: request.response, type: 'success', }); }, - error: function(request, text, error) { + error: function (request) { $('#up-notification').noty({ text: request.response, type: 'error', @@ -74,7 +74,7 @@ var up = up || {}; }; up.moveStuff = function moveStuffFunction(tabOrPortlet, item, context) { - var insertNode = function(sourceId, previousNodeId, nextNodeId) { + var insertNode = function (sourceId, previousNodeId, nextNodeId) { var saveOrderURL = context + '/api/layout?action=movePortletAjax' + @@ -91,16 +91,20 @@ var up = up || {}; data: null, dataType: 'json', async: true, - success: function() { + success: function () { console.log('layout move successful.'); }, - error: function(request, text, error) { + error: function () { console.error('Error persisting move ' + saveOrderURL); }, }); }; - var moveFavoriteGroup = function(sourceId, previousNodeId, nextNodeId) { + var moveFavoriteGroup = function ( + sourceId, + previousNodeId, + nextNodeId + ) { var method = '' === nextNodeId ? 'appendAfter' : 'insertBefore'; var elementId = '' === nextNodeId ? previousNodeId : nextNodeId; var saveOrderURL = @@ -119,10 +123,10 @@ var up = up || {}; data: null, dataType: 'json', async: true, - success: function() { + success: function () { console.log('favorite group move successful.'); }, - error: function(request, text, error) { + error: function () { console.error( 'Error persisting favorite group reorder ' + saveOrderURL @@ -132,23 +136,15 @@ var up = up || {}; }; var sourceID = $(item).attr('sourceid'); var nextId = - $(item).next().length != 0 ? - $(item) - .next() - .attr('sourceid') : - ''; - var prevId = - $(item).prev().length != 0 ? - $(item) - .prev() - .attr('sourceid') : - ''; + $(item).next().length > 0 ? $(item).next().attr('sourceid') : ''; + var previousId = + $(item).prev().length > 0 ? $(item).prev().attr('sourceid') : ''; if ('Tab' === tabOrPortlet) { - moveFavoriteGroup(sourceID, prevId, nextId); + moveFavoriteGroup(sourceID, previousId, nextId); } else { // We need to insert item both before and after - insertNode(sourceID, prevId, nextId); + insertNode(sourceID, previousId, nextId); } }; })(jQuery); diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-fragment-permissions-manager.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-fragment-permissions-manager.js index 06ad49b5c27..e5200532a1e 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-fragment-permissions-manager.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-fragment-permissions-manager.js @@ -18,7 +18,7 @@ */ var up = up || {}; -(function($, fluid) { +(function ($, fluid) { /** * Populate a permissions form according to the presence or absence of * CSS classes on the specified element. @@ -26,7 +26,7 @@ var up = up || {}; * @param that layout manager instance * @param element HTML element with permission CSS classes */ - var populateForm = function(that, element) { + var populateForm = function (that, element) { // set the hidden portlet ID attribute var form = that.locate('permissionsDialog').find('form'); form.find('[name=nodeId]').val(that.options.nodeIdExtractor(element)); @@ -71,7 +71,7 @@ var up = up || {}; * @param form permissions form * @return */ - var updatePermissions = function(that, element) { + var updatePermissions = function (that, element) { var newPermissions = persistPermissions( that, that.locate('permissionsDialog').find('form')[0] @@ -90,16 +90,14 @@ var up = up || {}; * @param form permissions form * @return array of newly-persisted permissions */ - var persistPermissions = function(that, form) { - var data = {}; - + var persistPermissions = function (that, form) { // construct an appropriate data object from the form - data.elementID = $(form) - .find('[name=nodeId]') - .val(); - data.action = 'updatePermissions'; - data.deletable = $(form.deletable).is(':checked'); - data.movable = $(form.movable).is(':checked'); + var data = { + elementID: $(form).find('[name=nodeId]').val(), + action: 'updatePermissions', + deletable: $(form.deletable).is(':checked'), + movable: $(form.movable).is(':checked'), + }; if (form.editable) { data.editable = $(form.editable).is(':checked'); @@ -110,13 +108,12 @@ var up = up || {}; $.post(that.options.savePermissionsUrl, data, null, 'json'); - var permissions = { + return { deletable: data.deletable, movable: data.movable, editable: data.editable, addChildAllowed: data.addChildAllowed, }; - return permissions; }; /** @@ -127,7 +124,7 @@ var up = up || {}; * @param permissions * @return */ - var updatePermissionClasses = function(that, element, permissions) { + var updatePermissionClasses = function (that, element, permissions) { setClass( element, permissions.deletable, @@ -162,7 +159,7 @@ var up = up || {}; * @param className * @return */ - var setClass = function(element, permission, className) { + var setClass = function (element, permission, className) { // if no permission is set, just return without modifying any classes if (permission == undefined) return; @@ -174,7 +171,7 @@ var up = up || {}; } }; - up.FragmentPermissionsMenu = function(container, options) { + up.FragmentPermissionsMenu = function (container, options) { var that = fluid.initView( 'up.FragmentPermissionsMenu', container, @@ -183,15 +180,14 @@ var up = up || {}; that.state = {}; - that.refresh = function(link) { + that.refresh = function (link) { var element = that.options.elementExtractor(that, link); populateForm(that, element); // initialize the permission form submission actions - that - .locate('permissionsForm') + that.locate('permissionsForm') .unbind('submit') - .submit(function() { + .submit(function () { return updatePermissions(that, element); }); @@ -224,7 +220,7 @@ var up = up || {}; }, }); - up.FragmentPermissionsManager = function(container, options) { + up.FragmentPermissionsManager = function (container, options) { var that = fluid.initView( 'up.FragmentPermissionsManager', container, @@ -234,17 +230,19 @@ var up = up || {}; that.menus = {}; // tabs permissions manager - that - .locate('pageDialog') - .dialog({width: 550, modal: true, autoOpen: false}); + that.locate('pageDialog').dialog({ + width: 550, + modal: true, + autoOpen: false, + }); that.menus.pagePermissionsManager = up.FragmentPermissionsMenu( that.locate('pageDialog'), { savePermissionsUrl: that.options.savePermissionsUrl, - elementExtractor: function(that, link) { + elementExtractor: function () { return $('#portalNavigationList li.active'); }, - titleExtractor: function(element) { + titleExtractor: function () { return $( '#portalNavigationList li.active a.portal-navigation-link' ).attr('title'); @@ -254,24 +252,26 @@ var up = up || {}; }, } ); - that.locate('pageDialogLink').click(function() { + that.locate('pageDialogLink').click(function () { that.menus.pagePermissionsManager.refresh($(this)); that.locate('pageDialog').dialog('open'); }); // TODO: on update, refresh tab name, editing, delete // columns permissions manager - that - .locate('columnDialog') - .dialog({width: 550, modal: true, autoOpen: false}); + that.locate('columnDialog').dialog({ + width: 550, + modal: true, + autoOpen: false, + }); that.menus.columnPermissionsManager = up.FragmentPermissionsMenu( that.locate('columnDialog'), { savePermissionsUrl: that.options.savePermissionsUrl, - elementExtractor: function(that, link) { + elementExtractor: function (that, link) { return $(link).parents('.portal-page-column'); }, - titleExtractor: function(element) { + titleExtractor: function (element) { return up.formatMessage(that.options.messages.columnX, [ $('.portal-page-column').index(element) + 1, ]); @@ -281,24 +281,26 @@ var up = up || {}; }, } ); - that.locate('columnDialogLink').click(function() { + that.locate('columnDialogLink').click(function () { that.menus.columnPermissionsManager.refresh($(this)); that.locate('columnDialog').dialog('open'); }); // TODO: on update, refresh layout options // portlet permissions manager - that - .locate('portletDialog') - .dialog({width: 550, modal: true, autoOpen: false}); + that.locate('portletDialog').dialog({ + width: 550, + modal: true, + autoOpen: false, + }); that.menus.portletPermissionsManager = up.FragmentPermissionsMenu( that.locate('portletDialog'), { savePermissionsUrl: that.options.savePermissionsUrl, - elementExtractor: function(that, link) { + elementExtractor: function (that, link) { return $(link).parents('.up-portlet-wrapper'); }, - titleExtractor: function(element) { + titleExtractor: function (element) { // The h2 is the portlet header. First link is the title and subsequent links // are the items in the "Options" menu, so make sure to only select the first one. return element @@ -312,11 +314,11 @@ var up = up || {}; onUpdatePermissions: null, }, listeners: { - onUpdatePermissions: function(element, newPermissions) { - if (!newPermissions.movable) { - element.addClass('locked'); - } else { + onUpdatePermissions: function (element, newPermissions) { + if (newPermissions.movable) { element.removeClass('locked'); + } else { + element.addClass('locked'); } // TODO: Apply portlet permissions: // includes refreshing reorderer and displaying/hiding delete @@ -324,7 +326,7 @@ var up = up || {}; }, } ); - that.locate('portletDialogLink').click(function() { + that.locate('portletDialogLink').click(function () { that.menus.portletPermissionsManager.refresh($(this)); that.locate('portletDialog').dialog('open'); }); diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-ga.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-ga.js index b898f8d2fa4..d04a86d83ed 100755 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-ga.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-ga.js @@ -18,23 +18,24 @@ */ var uportal = uportal || {}; -(function($, _) { +(function ($, _) { /** * Finds the appropriate property configuration for the current institution */ - var findPropertyConfig = function() { + var findPropertyConfig = function () { if (up.analytics.model == null) { return null; } if (_.isArray(up.analytics.model.hosts)) { - var propertyConfig = _.find(up.analytics.model.hosts, function( - propertyConfig - ) { - if (propertyConfig.name == up.analytics.host) { - return propertyConfig; + var propertyConfig = _.find( + up.analytics.model.hosts, + function (propertyConfig) { + if (propertyConfig.name == up.analytics.host) { + return propertyConfig; + } } - }); + ); if (propertyConfig != null) { return propertyConfig; @@ -47,9 +48,9 @@ var uportal = uportal || {}; /** * Set the dimensions that apply to the current user */ - var getDimensions = function(propertyConfig) { + var getDimensions = function (propertyConfig) { var dimensions = {}; - _.each(propertyConfig.dimensionGroups || [], function(setting) { + _.each(propertyConfig.dimensionGroups || [], function (setting) { dimensions['dimension' + setting.name] = setting.value; }); return dimensions; @@ -59,20 +60,15 @@ var uportal = uportal || {}; * Create the tracker with the propertyId and configuration from the * specified propertyConfig */ - var createTracker = function(propertyConfig) { + var createTracker = function (propertyConfig) { var createSettings = {}; - _.each(propertyConfig.config || [], function(setting) { + _.each(propertyConfig.config || [], function (setting) { // Name isn't supported, we assume the default tracker is used in other // places if (setting.name != 'name') { createSettings[setting.name] = setting.value; } }); - var dimensions = getDimensions(propertyConfig); - var dimensionKeys = []; - $.each(dimensions, function(key, value) { - dimensionKeys.push(key); - }); up.gtag('config', propertyConfig.propertyId, { send_page_view: false, }); @@ -81,7 +77,7 @@ var uportal = uportal || {}; /** * Build the page URI for a tab */ - var getTabUri = function(fragmentName, tabName) { + var getTabUri = function (fragmentName, tabName) { if (up.analytics.pageData.tab != null) { fragmentName = fragmentName || up.analytics.pageData.tab.fragmentName; @@ -104,7 +100,7 @@ var uportal = uportal || {}; /** * Set variables specific to the current page */ - var getPageVariables = function(fragmentName, tabName) { + var getPageVariables = function (fragmentName, tabName) { if (up.analytics.pageData.tab != null) { fragmentName = fragmentName || up.analytics.pageData.tab.fragmentName; @@ -121,7 +117,7 @@ var uportal = uportal || {}; } return { page_location: getTabUri(fragmentName, tabName), - page_title: title + page_title: title, }; }; @@ -130,9 +126,9 @@ var uportal = uportal || {}; * just using the portlet's windowId as the value if no fname is found in the * portletData */ - var getPortletFname = function(windowId) { + var getPortletFname = function (windowId) { var portletData = up.analytics.portletData[windowId]; - if (portletDate == null) { + if (portletData == null) { return windowId; } @@ -143,7 +139,7 @@ var uportal = uportal || {}; * Safe way to resolve the portlet's title from the windowId, falls back to * just using getPortletFname(windowId) if the title can't be found */ - var getRenderedPortletTitle = function(windowId) { + var getRenderedPortletTitle = function (windowId) { var portletWindowWrapper = $( 'div.up-portlet-windowId-content-wrapper.' + windowId ); @@ -169,14 +165,14 @@ var uportal = uportal || {}; /** * Build the portlet URI for the specified portlet */ - var getPortletUri = function(fname) { + var getPortletUri = function (fname) { return '/portlet/' + fname; }; /** * Set variables specific to the specified portlet */ - var getPortletVariables = function(windowId, portletData) { + var getPortletVariables = function (windowId, portletData) { var portletTitle = getRenderedPortletTitle(windowId); if (portletData == null) { @@ -184,7 +180,7 @@ var uportal = uportal || {}; } return { page_title: 'Portlet: ' + portletTitle, - page_location: getPortletUri(portletData.fname) + page_location: getPortletUri(portletData.fname), }; }; @@ -193,19 +189,19 @@ var uportal = uportal || {}; * class element that is not equal to excludedClasses or contained in the * excludedClasses array */ - var getInfoClass = function(selectorFunction, excludedClasses) { + var getInfoClass = function (selectorFunction, excludedClasses) { // Convert excludedClasses to an array for simpler code below if (!_.isArray(excludedClasses)) { excludedClasses = [excludedClasses]; } - var classAttr = selectorFunction().attr('class'); - if (classAttr == null) { + var classAttribute = selectorFunction().attr('class'); + if (classAttribute == null) { return null; } - var classes = classAttr.split(/\s+/); - return _.find(classes, function(cls) { + var classes = classAttribute.split(/\s+/); + return _.find(classes, function (cls) { if (!_.contains(excludedClasses, cls)) { return cls; } @@ -215,8 +211,8 @@ var uportal = uportal || {}; /** * Determine the fname of the portle the clicked flyout was rendered for */ - var getFlyoutFname = function(clickedLink) { - return getInfoClass(function() { + var getFlyoutFname = function (clickedLink) { + return getInfoClass(function () { return clickedLink.parents('div.up-portlet-fname-subnav-wrapper'); }, 'up-portlet-fname-subnav-wrapper'); }; @@ -224,8 +220,8 @@ var uportal = uportal || {}; /** * Determine the fname of the portle the clicked flyout was rendered for */ - var getExternaLinkWindowId = function(clickedLink) { - return getInfoClass(function() { + var getExternaLinkWindowId = function (clickedLink) { + return getInfoClass(function () { return clickedLink.parents( 'div.up-portlet-windowId-content-wrapper' ); @@ -236,7 +232,7 @@ var uportal = uportal || {}; * Handler for sending an analytics event when a link is clicked and then * dealing with opening a new window or emulating the click */ - var handleLinkClickEvent = function(event, clickedLink, eventOpts) { + var handleLinkClickEvent = function (event, clickedLink, eventOptions) { // Click will open in a new window if it is the middle button or the // meta or control keys are held var newWindow = @@ -246,19 +242,20 @@ var uportal = uportal || {}; clickedLink.attr('target') != null; var clickFunction; - if (newWindow) { - clickFunction = function() {}; - } else { - clickFunction = function() { - document.location = clickedLink.attr('href'); - }; - } - - up.gtag('event', 'page_view', - $.extend({ - event_callback: clickFunction - }, - eventOpts + clickFunction = newWindow + ? function () {} + : function () { + document.location = clickedLink.attr('href'); + }; + + up.gtag( + 'event', + 'page_view', + $.extend( + { + event_callback: clickFunction, + }, + eventOptions ) ); @@ -278,9 +275,9 @@ var uportal = uportal || {}; * Add click handlers to all of the flyout menus to fire flyout events when * they are used */ - var addFlyoutHandlers = function() { + var addFlyoutHandlers = function () { $('ul.fl-tabs li.portal-navigation a.portal-subnav-link').click( - function(event) { + function (event) { var clickedLink = $(this); // Find the target portlet's title @@ -295,13 +292,18 @@ var uportal = uportal || {}; var pageVariables = getPageVariables(); // Send the event and deal with the click - handleLinkClickEvent(event, clickedLink, - $.extend({ - event_category: 'Flyout Link', - event_action: getPortletUri(fname), - event_label: portletFlyoutTitle, - }, - pageVariables)); + handleLinkClickEvent( + event, + clickedLink, + $.extend( + { + event_category: 'Flyout Link', + event_action: getPortletUri(fname), + event_label: portletFlyoutTitle, + }, + pageVariables + ) + ); } ); }; @@ -310,33 +312,38 @@ var uportal = uportal || {}; * Inspects all clicks on links, any of the clicks that result in existing to * a different host are tracked as Outbound Link events */ - var addExternalLinkHandlers = function() { - $('a').click(function(event) { + var addExternalLinkHandlers = function () { + $('a').click(function (event) { var clickedLink = $(this); var linkHost = clickedLink.prop('hostname'); if (linkHost != '' && linkHost != document.domain) { var windowId = getExternaLinkWindowId(clickedLink); var eventVariables = null; - if (windowId != null) { - eventVariables = getPortletVariables(windowId); - } else { - eventVariables = getPageVariables(); - } + eventVariables = + windowId == null + ? getPageVariables() + : getPortletVariables(windowId); // Send the event and deal with the click - handleLinkClickEvent(event, clickedLink, - $.extend({ - event_category: 'Outbound Link', - event_action: clickedLink.prop('href'), - event_label: clickedLink.text(), - }, eventVariables)); + handleLinkClickEvent( + event, + clickedLink, + $.extend( + { + event_category: 'Outbound Link', + event_action: clickedLink.prop('href'), + event_label: clickedLink.text(), + }, + eventVariables + ) + ); } }); }; - var addMobileListTabHandlers = function() { - $('ul.up-portal-nav li.up-tab').click(function(event) { + var addMobileListTabHandlers = function () { + $('ul.up-portal-nav li.up-tab').click(function () { var clickedTab = $(this); // Ignore clicks on already open tabs @@ -344,14 +351,11 @@ var uportal = uportal || {}; return; } - var fragmentName = getInfoClass(function() { + var fragmentName = getInfoClass(function () { return clickedTab.find('div.up-tab-owner'); }, 'up-tab-owner'); - var tabName = clickedTab - .find('span.up-tab-name') - .text() - .trim(); + var tabName = clickedTab.find('span.up-tab-name').text().trim(); var pageVariables = getPageVariables(fragmentName, tabName); @@ -359,8 +363,7 @@ var uportal = uportal || {}; }); }; - $(document).ready(function() { - + $(document).ready(function () { var propertyConfig = findPropertyConfig(); // No property config means nothing to do @@ -381,19 +384,25 @@ var uportal = uportal || {}; // Don't bother sending the view in MAX WindowState if (up.analytics.pageData.urlState != 'MAX') { - up.gtag('event', 'page_view', - $.extend(pageVariables, dimensions)); + up.gtag('event', 'page_view', $.extend(pageVariables, dimensions)); } - up.gtag('event', 'timing_complete', - $.extend({ - event_category: 'tab', - name: getTabUri(), - value: up.analytics.pageData.executionTimeNano - }, pageVariables, dimensions)); + up.gtag( + 'event', + 'timing_complete', + $.extend( + { + event_category: 'tab', + name: getTabUri(), + value: up.analytics.pageData.executionTimeNano, + }, + pageVariables, + dimensions + ) + ); // Portlet Events - _.each(up.analytics.portletData, function(portletData, windowId) { + _.each(up.analytics.portletData, function (portletData, windowId) { // TODO configure portlet analytics include/exclude list if (portletData.fname == 'google-analytics-config') { return; @@ -401,13 +410,19 @@ var uportal = uportal || {}; var portletVariables = getPortletVariables(windowId, portletData); up.gtag('event', 'page_view', portletVariables); - up.gtag('event', 'timing_complete', - $.extend({ - event_category: 'tab', - name: getTabUri(), - value: up.analytics.pageData.executionTimeNano - }, portletVariables, dimensions)); - + up.gtag( + 'event', + 'timing_complete', + $.extend( + { + event_category: 'tab', + name: getTabUri(), + value: up.analytics.pageData.executionTimeNano, + }, + portletVariables, + dimensions + ) + ); }); // Add handlers to deal with click events on flyouts diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-draggable-manager.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-draggable-manager.js index 1a1c2df8fe3..e8007a34a3e 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-draggable-manager.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-draggable-manager.js @@ -114,7 +114,7 @@ 'use strict'; var up = up || {}; -(function($, fluid) { +(function ($, fluid) { /** * Private. Utility function that returns a boolean if the passed selector * is found within the passed container. @@ -122,14 +122,10 @@ var up = up || {}; * @param {Object} container - reference to jQuery DOM object. * @param {Object} selector - reference to a jQuery selector that may exist within the container. */ - var doesContain = function(container, selector) { + var doesContain = function (container, selector) { var value; - if (container.find(selector).length > 0) { - value = true; - } else { - value = false; - } // end:if. + value = container.find(selector).length > 0; return value; }; // end:function. @@ -141,7 +137,7 @@ var up = up || {}; * @param {Object} that - reference to LayoutDraggableManager instance. * @param {Object} target - reference to a DOM element. Specifically, a portal column. */ - var dragOverHandler = function(that, target) { + var dragOverHandler = function (that, target) { var column; var portlets; var portletLocked; @@ -193,7 +189,7 @@ var up = up || {}; * @param {Object} that - reference to LayoutDraggableManager instance. * @param {Object} target - reference to a DOM element. Specifically, a portal column. */ - var dragOutHandler = function(that, target) { + var dragOutHandler = function (that, target) { var column; var dropTarget; @@ -209,7 +205,7 @@ var up = up || {}; * @param {Object} that - reference to LayoutDraggableManager instance. * @param {Object} target - reference to a DOM element. Specifically, a portal column. */ - var dragDropHandler = function(that, target) { + var dragDropHandler = function (that, target) { var loader; var column; var isPortlets; @@ -226,8 +222,8 @@ var up = up || {}; // Reveal gallery loader. loader.css({ - 'margin': '7px 0 0 0', - 'opacity': '.70', + margin: '7px 0 0 0', + opacity: '.70', 'background-color': '#000', }); up.showLoader(loader); @@ -289,7 +285,7 @@ var up = up || {}; * * @param {Object} that - reference to LayoutDraggableManager instance. */ - var initialize = function(that) { + var initialize = function (that) { // Element mapping. Caches elements that mostly exist outside the realm of the component's scope. that.elem = {}; that.elem.columnContainer = $(that.options.selectors.body).find( @@ -310,7 +306,7 @@ var up = up || {}; * @param {Object} container - reference to HTML DOM element by ID. * @param {Object} options - reference to object containing all configurations. */ - up.LayoutDraggableManager = function(container, options) { + up.LayoutDraggableManager = function (container, options) { var that; that = fluid.initView('up.LayoutDraggableManager', container, options); @@ -320,7 +316,7 @@ var up = up || {}; * * @param {Object} that - reference to an instance of the LayoutDraggableManager component. */ - that.enableEligibleColumns = function(event, ui) { + that.enableEligibleColumns = function () { var eligibleColumns; var droppableInnerColumns; @@ -344,16 +340,16 @@ var up = up || {}; * @param {Object} selector - reference to jQuery selector. * The passed selector should be a reference to a portal column. */ - that.makeDroppable = function(selector) { + that.makeDroppable = function (selector) { selector.droppable({ accept: that.options.selectors.accept, - over: function(event, ui) { + over: function (event) { dragOverHandler(that, event.target); }, - out: function(event, ui) { + out: function (event) { dragOutHandler(that, event.target); }, - drop: function(event, ui) { + drop: function (event) { dragDropHandler(that, event.target); }, }); @@ -366,7 +362,7 @@ var up = up || {}; * @param {Object} selector - reference to jQuery selector. * The passed selector should be a reference to gallery list items. */ - that.makeDraggable = function(selector) { + that.makeDraggable = function (selector) { var dragHandle; dragHandle = selector.find(that.options.selectors.dragHandle); @@ -398,7 +394,7 @@ var up = up || {}; stack: that.options.stack, zIndex: 99999, containment: that.options.selectors.body, - start: function(event, ui) { + start: function (event, ui) { that.enableEligibleColumns(event, ui); }, }); @@ -413,7 +409,7 @@ var up = up || {}; * @param {Object} oldModel - reference to the old state of the pager model. * @param {Object} pager - reference to an instance of the pager component. */ - that.initDragAndDrop = function(newModel, oldModel, pager) { + that.initDragAndDrop = function (newModel, oldModel, pager) { var galleryList; var listItem; diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-gallery.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-gallery.js index 038e27d2e92..435bd2a0074 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-gallery.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-gallery.js @@ -19,8 +19,8 @@ 'use strict'; var up = up || {}; -(function($, fluid) { - up.AjaxLayoutCategoryListView = function(container, overallThat, options) { +(function ($, fluid) { + up.AjaxLayoutCategoryListView = function (container, overallThat, options) { // construct the new component var that = fluid.initView( 'up.AjaxLayoutCategoryListView', @@ -41,7 +41,7 @@ var up = up || {}; {id: 'categoryName', selector: '.category-choice-name'}, ]; - that.refresh = function() { + that.refresh = function () { // Build an array of all categories containing at least // one deep member, sorted by name var categories = []; @@ -54,17 +54,16 @@ var up = up || {}; portlets: [], deepPortlets: [], }); - $(overallThat.registry.getAllCategories()).each(function( - idx, - category - ) { - if ( - category.deepPortlets.length > 0 && - category.id !== 'local.1' - ) { - categories.push(category); + $(overallThat.registry.getAllCategories()).each( + function (index, category) { + if ( + category.deepPortlets.length > 0 && + category.id !== 'local.1' + ) { + categories.push(category); + } } - }); + ); categories.sort( up.getStringPropertySortFunction( 'name', @@ -76,7 +75,7 @@ var up = up || {}; var s = overallThat.state.currentCategory || ''; - $(categories).each(function(idx, category) { + $(categories).each(function (index, category) { tree.children.push({ ID: 'categoryContainer:', children: [ @@ -95,7 +94,7 @@ var up = up || {}; { type: 'jQuery', func: 'click', - args: function() { + args: function () { overallThat.events.onCategorySelect.fire( overallThat, category @@ -135,7 +134,7 @@ var up = up || {}; rootCategoryDescription: 'All Categories', }); - up.AjaxLayoutPortletListView = function(container, overallThat, options) { + up.AjaxLayoutPortletListView = function (container, overallThat, options) { var that; var cutpoints; @@ -153,16 +152,15 @@ var up = up || {}; ]); // DragManger 'onDropTarget' callback. - that.dragManager.events.onDropTarget.addListener(function( - method, - targetID - ) { - that.state.drag.overall.events.onPortletDrag.fire( - that.state.drag.data, - method, - targetID - ); - }); + that.dragManager.events.onDropTarget.addListener( + function (method, targetID) { + that.state.drag.overall.events.onPortletDrag.fire( + that.state.drag.data, + method, + targetID + ); + } + ); // initialize a state map for this component that.state = {}; @@ -179,7 +177,7 @@ var up = up || {}; {id: 'portletIcon', selector: '.portlet-thumb-icon'}, ]; - that.refresh = function() { + that.refresh = function () { var portlets; var members; @@ -188,13 +186,13 @@ var up = up || {}; portlets = []; members = overallThat.state.currentCategory && - overallThat.state.currentCategory !== '' ? - overallThat.registry.getMemberPortlets( - overallThat.state.currentCategory, - true - ) : - overallThat.registry.getAllPortlets(); - $(members).each(function(idx, portlet) { + overallThat.state.currentCategory !== '' + ? overallThat.registry.getMemberPortlets( + overallThat.state.currentCategory, + true + ) + : overallThat.registry.getAllPortlets(); + $(members).each(function (index, portlet) { if ( !overallThat.state.portletRegex || overallThat.state.portletRegex.test(portlet.title) || @@ -218,13 +216,13 @@ var up = up || {}; { key: 'portletWrapper', valuebinding: '*.id', - components: function(row) { + components: function (row) { return { decorators: [ { type: 'jQuery', func: 'mousedown', - args: function() { + args: function () { // Update drag state. This state object is read // when a thumbnail is dropped into a portal column. that.state.drag = { @@ -250,13 +248,13 @@ var up = up || {}; { key: 'portletLink', valuebinding: '*.id', - components: function(row) { + components: function (row) { return { decorators: [ { type: 'jQuery', func: 'click', - args: function() { + args: function () { overallThat.events.onPortletSelect.fire( overallThat, row @@ -278,7 +276,7 @@ var up = up || {}; { key: 'portletIcon', valuebinding: '*.id', - components: function(row) { + components: function (row) { return { decorators: [ { @@ -327,7 +325,7 @@ var up = up || {}; }, }, listeners: { - onModelChange: function(newModel, oldModel, pager) { + onModelChange: function (newModel, oldModel, pager) { // Temporary solution. The initDragAndDrop() method call has been wrapped // within a setTimeout to resolve a fluid.pager bug (i.e. UP-4000). When // the onModelChange event fires the DOM contained within the pager.container @@ -339,7 +337,7 @@ var up = up || {}; // draggable. Wrapping this method call within a setTimeout with the duration set to // 0 forces the initDragAndDrop() method to be the last JavaScript function executed, // giving time for the DOM to be redrawn. - var timer = setTimeout(function() { + var timer = setTimeout(function () { that.dragManager.initDragAndDrop( newModel, oldModel, @@ -378,12 +376,12 @@ var up = up || {}; '/ResourceServingWebapp/rs/tango/0.8.90/32x32/categories/applications-other.png', }); - up.BrowseContentPane = function(container, overallThat, options) { + up.BrowseContentPane = function (container, overallThat, options) { var that = fluid.initView('up.BrowseContentPane', container, options); var initialized = false; - that.showPane = function() { + that.showPane = function () { if (!initialized) { overallThat.showLoading(); initialized = true; @@ -399,34 +397,31 @@ var up = up || {}; that.events.onShow.fire(that); }; - that.hidePane = function() { + that.hidePane = function () { that.locate('pane').hide(); that.locate('paneLink').removeClass('active'); }; - that.hidePaneLink = function() { + that.hidePaneLink = function () { that.locate('pane').hide(); - that - .locate('paneLink') - .hide() - .removeClass('active'); + that.locate('paneLink').hide().removeClass('active'); }; - that.showPaneLink = function() { + that.showPaneLink = function () { that.locate('paneLink').show(); }; - that.showLoading = function() { + that.showLoading = function () { that.locate('ui').hide(); that.locate('loading').show(); }; - that.hideLoading = function() { + that.hideLoading = function () { that.locate('loading').hide(); that.locate('ui').show(); }; - that.locate('paneLink').click(function() { + that.locate('paneLink').click(function () { overallThat.showPane(that.options.key); }); @@ -447,7 +442,7 @@ var up = up || {}; type: 'up.AjaxLayoutPortletListView', }, listeners: { - onLoad: function(portletBrowser, gallery) { + onLoad: function (portletBrowser, gallery) { gallery.hideLoading(); }, }, @@ -475,7 +470,7 @@ var up = up || {}; }, }); - up.PortalGalleryPane = function(container, overallThat, options) { + up.PortalGalleryPane = function (container, overallThat, options) { var that; var initialized; @@ -488,7 +483,7 @@ var up = up || {}; * called, show the loading screen, initialize the pane, and then * hide the loading pane when done. */ - that.showPane = function() { + that.showPane = function () { // if the pane has not yet been initialized, show the loading // screen while we initialize it if (!initialized) { @@ -506,13 +501,13 @@ var up = up || {}; /** * Hide this pane */ - that.hidePane = function() { + that.hidePane = function () { that.locate('pane').hide(); that.locate('paneLink').removeClass('active'); }; // wire the pane link to display the appropriate pane - that.locate('paneLink').click(function() { + that.locate('paneLink').click(function () { overallThat.showPane(that.options.key); }); @@ -535,40 +530,33 @@ var up = up || {}; }, }); - up.PortalGallery = function(container, options) { + up.PortalGallery = function (container, options) { var that = fluid.initView('up.PortalGallery', container, options); - that.panes = []; - that.panes.push( + that.panes = [ fluid.initSubcomponent(that, 'browseContentPane', [ container, that, fluid.COMPONENT_OPTIONS, - ]) - ); - that.panes.push( + ]), fluid.initSubcomponent(that, 'useContentPane', [ container, that, fluid.COMPONENT_OPTIONS, - ]) - ); - that.panes.push( + ]), fluid.initSubcomponent(that, 'skinPane', [ container, that, fluid.COMPONENT_OPTIONS, - ]) - ); - that.panes.push( + ]), fluid.initSubcomponent(that, 'layoutPane', [ container, that, fluid.COMPONENT_OPTIONS, - ]) - ); + ]), + ]; - that.openGallery = function() { + that.openGallery = function () { that.options.isOpen = true; that.locate('galleryHandle').addClass('handle-arrow-up'); that.locate('galleryInner').slideDown(that.options.openSpeed); @@ -584,14 +572,14 @@ var up = up || {}; } }; - that.closeGallery = function() { + that.closeGallery = function () { that.options.isOpen = false; that.locate('galleryHandle').removeClass('handle-arrow-up'); that.locate('galleryInner').slideUp(that.options.closeSpeed); }; - that.showPane = function(key) { - $(that.panes).each(function(idx, pane) { + that.showPane = function (key) { + $(that.panes).each(function (index, pane) { if (pane.options.key === key) { pane.showPane(); } else { @@ -600,23 +588,23 @@ var up = up || {}; }); }; - that.hidePaneLink = function(key) { - $(that.panes).each(function(idx, pane) { + that.hidePaneLink = function (key) { + $(that.panes).each(function (index, pane) { if (pane.options.key === key) { pane.hidePaneLink(); } }); }; - that.showPaneLink = function(key) { - $(that.panes).each(function(idx, pane) { + that.showPaneLink = function (key) { + $(that.panes).each(function (index, pane) { if (pane.options.key === key) { pane.showPaneLink(); } }); }; - that.refreshPaneLink = function(key) { + that.refreshPaneLink = function () { if ( $('#portalPageBodyColumns .portal-page-column').filter( '.canAddChildren,.up-fragment-admin' @@ -628,12 +616,12 @@ var up = up || {}; } }; - that.showLoading = function() { + that.showLoading = function () { that.locate('ui').hide(); that.locate('loading').show(); }; - that.hideLoading = function() { + that.hideLoading = function () { var modal; var ui; @@ -646,7 +634,7 @@ var up = up || {}; // wire the gallery handle to open and close the gallery panel // as appropriate - that.locate('galleryHandle').click(function() { + that.locate('galleryHandle').click(function () { if (that.options.isOpen) { that.closeGallery(); } else { @@ -708,7 +696,7 @@ var up = up || {}; paneLink: '.layout-link', }, listeners: { - onInitialize: function(overallThat) { + onInitialize: function () { up.LayoutSelector('.layouts-list', {}); }, }, diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-persistence.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-persistence.js index c7c093b5d31..1385fe8d875 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-persistence.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-persistence.js @@ -18,14 +18,14 @@ */ var up = up || {}; -(function($, fluid) { +(function ($, fluid) { /** * Instantiate a LayoutPersistence component * * @param {Object} component Container the element containing the fragment browser * @param {Object} options configuration options for the components */ - up.LayoutPreferencesPersistence = function(container, options) { + up.LayoutPreferencesPersistence = function (container, options) { // construct the new component var that = fluid.initView( 'up.LayoutPreferencesPersistence', @@ -33,7 +33,7 @@ var up = up || {}; options ); - that.update = function(data, success) { + that.update = function (data, success) { $.ajax({ url: that.options.saveLayoutUrl, type: 'POST', @@ -41,7 +41,7 @@ var up = up || {}; dataType: 'json', async: false, success: success, - error: function(request, text, error) { + error: function (request, text, error) { that.events.onError.fire(that, request, text, error); }, }); @@ -65,7 +65,7 @@ var up = up || {}; }, listeners: { onSuccess: null, - onError: function(that, request, text, error) { + onError: function (that, request, text, error) { if (console) console.log(request, text, error); that.locate('errorMessage').text(that.options.messages.error); }, diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-preferences.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-preferences.js index 35341fd0b2c..af16bc882ca 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-preferences.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-preferences.js @@ -18,7 +18,7 @@ */ var uportal = uportal || {}; -(function($, fluid) { +(function ($, fluid) { var layouts = [ {nameKey: 'fullWidth', columns: [100]}, {nameKey: 'narrowWide', columns: [40, 60]}, @@ -46,11 +46,11 @@ var uportal = uportal || {}; * GENERAL UTILITY METHODS */ - var getActiveTabId = function() { + var getActiveTabId = function () { return up.defaultNodeIdExtractor($('#portalNavigationList li.active')); }; - var typeMsg = { + var typeMessage = { ERROR: 'error', WARN: 'warn', SUCCESS: 'success', @@ -62,12 +62,12 @@ var uportal = uportal || {}; * type : should be a css class definition on message div, values are "error", "warn", "success" * callback : should be a function or null */ - var showMessage = function(msg, type, callback) { + var showMessage = function (message, type, callback) { var messageDiv = $('#portalPageBodyMessage'); - if (msg && type) { - var delay = type == typeMsg.ERROR ? 5000 : 2000; - if (messageDiv.length != 0) { - messageDiv.html('

    ' + msg + '

    '); + if (message && type) { + var delay = type == typeMessage.ERROR ? 5000 : 2000; + if (messageDiv.length > 0) { + messageDiv.html('

    ' + message + '

    '); messageDiv .removeClass() .addClass(type) @@ -89,13 +89,13 @@ var uportal = uportal || {}; * * @return layout columns array */ - var getCurrentLayout = function() { + var getCurrentLayout = function () { var columns = []; // iterate through the CSS classnames for each column and parse // the fl-container-flex classnames to determine the width percentage for // each column - $('#portalPageBodyColumns > [id^=column_]').each(function() { + $('#portalPageBodyColumns > [id^=column_]').each(function () { var flClass = $(this) .get(0) .className.match('fl-container-flex[0-9]+'); @@ -106,7 +106,7 @@ var uportal = uportal || {}; // if no columns were found, indicate that this is a single-column // layout - if (columns.length == 0) columns.push(100); + if (columns.length === 0) columns.push(100); return columns; }; @@ -118,7 +118,7 @@ var uportal = uportal || {}; * * @return column array */ - var getDeletableColumns = function() { + var getDeletableColumns = function () { var columns = $('#portalPageBodyColumns > [id^=column_]'); var deletableColumns = columns.filter(deletableColumnsSelector); @@ -141,7 +141,7 @@ var uportal = uportal || {}; return deletableColumns; }; - var getPermittedLayouts = function() { + var getPermittedLayouts = function () { var canAddColumns = $('#portalNavigation_' + getActiveTabId()).filter( '.canAddChildren,.up-fragment-admin' ); @@ -168,8 +168,10 @@ var uportal = uportal || {}; minColumns = columns.length - deletableColumns.length; } else { var separateAcceptor = false; - for (var i = 0; i < acceptorColumns.length; i++) { - if ($.inArray(acceptorColumns[i], deletableColumns) < 0) { + for (var index = 0; index < acceptorColumns.length; index++) { + if ( + $.inArray(acceptorColumns[index], deletableColumns) < 0 + ) { separateAcceptor = true; break; } @@ -179,7 +181,7 @@ var uportal = uportal || {}; } // set disabled to true for layouts not permitted - $(layouts).each(function(idx, layout) { + $(layouts).each(function (index, layout) { var cannotAddColumns = !canAddColumns && layout.columns.length > columns.length; var cannotRemoveColumns = layout.columns.length < minColumns; @@ -192,7 +194,7 @@ var uportal = uportal || {}; return layouts; }; - var updateColumns = function(layout, that) { + var updateColumns = function (layout, that) { var newcolumns = layout.columns; var columnCount = $('#portalPageBodyColumns [id^=column_]').size(); @@ -203,15 +205,15 @@ var uportal = uportal || {}; }; if (newcolumns.length < columnCount) { - var numToDelete = columnCount - newcolumns.length; + var numberToDelete = columnCount - newcolumns.length; var deletables = getDeletableColumns(); post.deleted = []; var deletes = []; - for (var i = 0; i < numToDelete; i++) { - deletes.push(deletables[deletables.length - i - 1]); + for (var index = 0; index < numberToDelete; index++) { + deletes.push(deletables[deletables.length - index - 1]); post.deleted.push( up.defaultNodeIdExtractor( - deletables[deletables.length - i - 1] + deletables[deletables.length - index - 1] ) ); } @@ -223,9 +225,9 @@ var uportal = uportal || {}; post.acceptor = up.defaultNodeIdExtractor(acceptor); } - that.persistence.update(post, function(data) { + that.persistence.update(post, function (data) { // add any new columns to the page - $(data.newColumnIds).each(function() { + $(data.newColumnIds).each(function () { var id = this; var newColumn = $(document.createElement('div')) .attr('id', 'column_' + id) @@ -244,10 +246,10 @@ var uportal = uportal || {}; }); // remove any deleted columns from the page - $(deletes).each(function(idx, del) { + $(deletes).each(function () { $(this) .find('[id^=portlet_]') - .each(function(idx, portlet) { + .each(function (index, portlet) { var innerColumn = acceptor.find( '.portal-page-column-inner' ); @@ -258,31 +260,30 @@ var uportal = uportal || {}; // update the widths and CSS classnames for each column // on the page - $('#portalPageBodyColumns > [id^=column_]').each(function(i) { + $('#portalPageBodyColumns > [id^=column_]').each(function (index) { // Column Number var column = $(this).removeClass( 'column-1 column-2 column-3 column-4 column-5 column-6' ); - var columnNumberClass = 'column-' + (i + 1); + var columnNumberClass = 'column-' + (index + 1); $(column).addClass(columnNumberClass); // Column Width - $(this.className.split(' ')).each(function(idx, className) { - if (className.match(that.options.columnWidthClassPattern)) { + $(this.className.split(' ')).each(function (_, className) { + if (that.options.columnWidthClassPattern.test(className)) { $(column).removeClass(className); } }); var columnWidthClass = that.options.columnWidthClassFunction( - newcolumns[i] + newcolumns[index] ); columnWidthClass && $(column).addClass(columnWidthClass); // div.inner-column CSS classes var innerColumn = $(column).find('.portal-page-column-inner'); innerColumn.attr('class', 'portal-page-column-inner'); // Reset to minimum - var innerColumnClasses = that.options.innerColumnClassesFunction( - newcolumns[i] - ); + var innerColumnClasses = + that.options.innerColumnClassesFunction(newcolumns[index]); innerColumnClasses && innerColumn.addClass(innerColumnClasses); }); @@ -298,7 +299,7 @@ var uportal = uportal || {}; * @param {Object} component Container the element containing the fragment browser * @param {Object} options configuration options for the components */ - up.LayoutPreferences = function(container, options) { + up.LayoutPreferences = function (container, options) { // construct the new component var that = fluid.initView('up.LayoutPreferences', container, options); @@ -348,7 +349,7 @@ var uportal = uportal || {}; }, }, listeners: { - onPortletSelect: function( + onPortletSelect: function ( componentThat, portlet ) { @@ -372,40 +373,39 @@ var uportal = uportal || {}; // if the page has no content just add // the new portlet to the tab if (firstChannel.size() == 0) { - options[ - 'elementID' - ] = getActiveTabId(); + options['elementID'] = + getActiveTabId(); } else { // otherwise - options[ - 'elementID' - ] = up.defaultNodeIdExtractor( - firstChannel - ); + options['elementID'] = + up.defaultNodeIdExtractor( + firstChannel + ); options['position'] = 'insertBefore'; } that.persistence.update( options, - function(data) { + function (data) { if (data.error) { showMessage( data.error, - typeMsg.ERROR + typeMessage.ERROR ); /* } else if (data.response) { showMessage(data.response, typeMsg.SUCCESS, function(){window.location = that.urlProvider.getTabUrl(getActiveTabId());}); */ } else { - window.location = that.urlProvider.getTabUrl( - getActiveTabId() - ); + window.location = + that.urlProvider.getTabUrl( + getActiveTabId() + ); } } ); }, - onPortletDrag: function( + onPortletDrag: function ( portlet, method, targetID @@ -418,19 +418,20 @@ var uportal = uportal || {}; position: method, elementID: targetID, }, - function(xml) { + function (xml) { if (xml.error) { showMessage( xml.error, - typeMsg.ERROR + typeMessage.ERROR ); /* } else if (data.response) { showMessage(xml.response, typeMsg.SUCCESS, function(){window.location = that.urlProvider.getTabUrl(getActiveTabId());}); */ } else { - window.location = that.urlProvider.getTabUrl( - getActiveTabId() - ); + window.location = + that.urlProvider.getTabUrl( + getActiveTabId() + ); } } ); @@ -446,7 +447,7 @@ var uportal = uportal || {}; options: { listeners: { // add a PortletBrowser to the use content pane - onInitialize: function(overallThat) { + onInitialize: function (overallThat) { up.PortletBrowser( '.use-content', overallThat, @@ -459,8 +460,7 @@ var uportal = uportal || {}; }, }, categoryListView: { - type: - 'up.AjaxLayoutCategoryListView', + type: 'up.AjaxLayoutCategoryListView', options: { rootCategoryName: that.options.messages @@ -468,8 +468,7 @@ var uportal = uportal || {}; }, }, portletListView: { - type: - 'up.AjaxLayoutPortletListView', + type: 'up.AjaxLayoutPortletListView', }, searchView: { options: { @@ -482,13 +481,14 @@ var uportal = uportal || {}; // on portlet selection, redirect the // browser to the selected portlet's // focus URL - onPortletSelect: function( + onPortletSelect: function ( componentThat, portlet ) { - window.location = that.urlProvider.getPortletUrl( - portlet.fname - ); + window.location = + that.urlProvider.getPortletUrl( + portlet.fname + ); }, }, } @@ -502,23 +502,24 @@ var uportal = uportal || {}; skinPane: { options: { listeners: { - onInitialize: function(overallThat) { + onInitialize: function () { // add a SkinSelector component to the skin pane up.SkinSelector('.skins', { listeners: { // when a skin is selected, update the // persisted skin choice and reload // the page with the new skin - onSelectSkin: function(skin) { + onSelectSkin: function (skin) { that.persistence.update( { action: 'chooseSkin', skinName: skin.key, }, - function(data) { - window.location = that.urlProvider.getTabUrl( - getActiveTabId() - ); + function () { + window.location = + that.urlProvider.getTabUrl( + getActiveTabId() + ); } ); }, @@ -538,7 +539,7 @@ var uportal = uportal || {}; layoutPane: { options: { listeners: { - onInitialize: function(overallThat) { + onInitialize: function () { // add a LayoutSelector component to the // layouts pane up.LayoutSelector('.layouts-list', { @@ -551,10 +552,7 @@ var uportal = uportal || {}; // when a new layout is selected, call // the locally-defined column update // method - onLayoutSelect: function( - layout, - componentThat - ) { + onLayoutSelect: function (layout) { updateColumns(layout, that); }, }, @@ -570,14 +568,14 @@ var uportal = uportal || {}; that.components.tabManager = up.TabManager('#portalNavigation', { listeners: { - onTabEdit: function(newValue, oldValue, editNode, viewNode) { + onTabEdit: function (newValue) { that.persistence.update({ action: 'renameTab', tabId: getActiveTabId(), tabName: newValue, }); }, - onTabRemove: function(anchor) { + onTabRemove: function (anchor) { if (!confirm(that.options.messages.confirmRemoveTab)) { return false; } @@ -591,12 +589,13 @@ var uportal = uportal || {}; action: 'removeElement', elementID: id, }, - function(data) { - window.location = that.urlProvider.getPortalHomeUrl(); + function () { + window.location = + that.urlProvider.getPortalHomeUrl(); } ); }, - onTabAdd: function(tabLabel, columns, tabGroup) { + onTabAdd: function (tabLabel, columns, tabGroup) { that.persistence.update( { action: 'addTab', @@ -604,14 +603,14 @@ var uportal = uportal || {}; widths: columns, tabGroup: tabGroup, }, - function(data) { + function (data) { window.location = that.urlProvider.getTabUrl( data.tabId ); } ); }, - onTabMove: function(sourceId, method, elementId, tabPosition) { + onTabMove: function (sourceId, method, elementId, tabPosition) { that.persistence.update({ action: 'moveTab', sourceID: sourceId, @@ -641,21 +640,19 @@ var uportal = uportal || {}; grabHandle: '[id*=toolbar_] .grab-handle', }, listeners: { - afterMove: function(movedNode) { + afterMove: function (movedNode) { var method = 'insertBefore'; var target = null; if ( - $(movedNode) - .nextAll('[id^=portlet_]') - .size() > 0 + $(movedNode).nextAll('[id^=portlet_]').size() > + 0 ) { target = $(movedNode) .nextAll('[id^=portlet_]') .get(0); } else if ( - $(movedNode) - .prevAll('[id^=portlet_]') - .size() > 0 + $(movedNode).prevAll('[id^=portlet_]').size() > + 0 ) { target = $(movedNode) .prevAll('[id^=portlet_]') @@ -672,7 +669,7 @@ var uportal = uportal || {}; sourceID: up.defaultNodeIdExtractor(movedNode), }; var succeeded = false; // default... until we hear otherwise - that.persistence.update(options, function(data) { + that.persistence.update(options, function (data) { if (!data.error) { succeeded = true; } @@ -705,7 +702,7 @@ var uportal = uportal || {}; } // Portlet deletion - $('a[id*=removePortlet_]').click(function() { + $('a[id*=removePortlet_]').click(function () { var id = up.defaultNodeIdExtractor(this); if (!confirm(that.options.messages.confirmRemovePortlet)) { return false; @@ -732,12 +729,12 @@ var uportal = uportal || {}; isFragmentMode: false, gallerySelector: '.up-gallery', // Pass null/false to disable columnWidthClassPattern: 'col-md-', - columnWidthClassFunction: function(column) { + columnWidthClassFunction: function () { console.error( 'The columnWidthClassFunction option must be specified.' ); }, - innerColumnClassesFunction: function(column) { + innerColumnClassesFunction: function () { console.error( 'The innerColumnClassesFunction option must be specified.' ); @@ -753,7 +750,7 @@ var uportal = uportal || {}; * @param {Object} component Container the element containing the fragment browser * @param {Object} options configuration options for the components */ - up.FocusedLayoutPreferences = function(container, options) { + up.FocusedLayoutPreferences = function (container, options) { // construct the new component var that = fluid.initView( 'up.FocusedLayoutPreferences', @@ -773,14 +770,14 @@ var uportal = uportal || {}; that.components = {}; // initialize the focused content adding dialog link - $('#focusedContentDialogLink').click(function(e) { - e.preventDefault(); + $('#focusedContentDialogLink').click(function (event) { + event.preventDefault(); // initialize the dialog $('.focused-content-dialog').dialog({width: 500, modal: true}); // wire the form to persist portlet addition - $('.focused-content-dialog form').submit(function() { + $('.focused-content-dialog form').submit(function () { var portletId; var tabId; var form; @@ -788,9 +785,7 @@ var uportal = uportal || {}; // collect form data form = this; portletId = form.portletId.value; - tabId = $(form) - .find('[name=targetTab]:checked') - .val(); + tabId = $(form).find('[name=targetTab]:checked').val(); // persist the portlet addition that.persistence.update( @@ -800,7 +795,7 @@ var uportal = uportal || {}; position: 'insertBefore', elementID: tabId, }, - function(xml) { + function () { window.location = that.urlProvider.getTabUrl(tabId); } ); @@ -810,7 +805,7 @@ var uportal = uportal || {}; // re-wire the form to open the initialized dialog $(this) .unbind('click') - .click(function() { + .click(function () { $('.focused-content-dialog').dialog('open'); }); }); diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-selector.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-selector.js index 89e6fa50cfa..4921c89f63b 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-selector.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-layout-selector.js @@ -19,8 +19,8 @@ 'use strict'; var up = up || {}; -(function($, fluid) { - var getComponentTree = function(that) { +(function ($, fluid) { + var getComponentTree = function (that) { var currentLayoutString; var tree; @@ -28,7 +28,7 @@ var up = up || {}; currentLayoutString = that.options.currentLayout.join('-'); tree = {children: []}; - $(that.options.layouts).each(function(idx, layout) { + $(that.options.layouts).each(function (index, layout) { var layoutString = layout.columns.join('-'); var classes = ''; @@ -53,7 +53,7 @@ var up = up || {}; { type: 'jQuery', func: 'click', - args: function() { + args: function () { if (!layout.disabled) { that.options.currentLayout = layout.columns; @@ -73,9 +73,9 @@ var up = up || {}; layout.columns.length + ' ' + that.options.strings[ - layout.columns.length == 1 ? - 'column' : - 'columns' + layout.columns.length == 1 + ? 'column' + : 'columns' ], }, { @@ -106,7 +106,7 @@ var up = up || {}; return tree; }; - up.LayoutSelector = function(container, options) { + up.LayoutSelector = function (container, options) { var that; var cutpoints; @@ -130,7 +130,7 @@ var up = up || {}; /** * Refresh the rendered skin selector view */ - that.refresh = function() { + that.refresh = function () { var tree = getComponentTree(that); fluid.reRender(that.templates, $(container), tree, { cutpoints: cutpoints, @@ -140,7 +140,9 @@ var up = up || {}; that.templates = fluid.selfRender( $(container), getComponentTree(that), - {cutpoints: cutpoints} + { + cutpoints: cutpoints, + } ); return that; diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-parameter-editor.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-parameter-editor.js index f442b414e55..c3913586a84 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-parameter-editor.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-parameter-editor.js @@ -18,42 +18,40 @@ */ var up = up || {}; -(function($, fluid) { - var getParameterPath = function(name, that) { +(function ($, fluid) { + var getParameterPath = function (name, that) { return ( that.options.parameterBindName + - '[\'' + + "['" + that.options.parameterNamePrefix + name + - '\'].value' + "'].value" ); }; - var getAuxiliaryPath = function(name, that) { + var getAuxiliaryPath = function (name, that) { return ( that.options.auxiliaryBindName + - '[\'' + + "['" + that.options.parameterNamePrefix + name + - '\'].value' + "'].value" ); }; /** * Add a new parameter to the table. This method will add a row to the */ - var addParameter = function(form, that) { + var addParameter = function (form, that) { var tr; var td; var name; - var paramPath; + var parameterPath; var checkbox; // get the new parameter name from the form - name = $(form) - .find('input[name=name]') - .val(); - paramPath = getAuxiliaryPath(name, that); + name = $(form).find('input[name=name]').val(); + parameterPath = getAuxiliaryPath(name, that); // create a new row in our parameters table tr = $(document.createElement('tr')); @@ -77,7 +75,7 @@ var up = up || {}; that.options.displayClasses.addValueLinkExtraClass ) .text(that.options.messages.addValue) - .click(function() { + .click(function () { addValue($(this), that); }) .append('  ') @@ -103,7 +101,7 @@ var up = up || {}; } else { td.append( $(document.createElement('input')) - .attr({name: paramPath, type: 'text'}) + .attr({name: parameterPath, type: 'text'}) .addClass( that.options.displayClasses.inputElementExtraClass ) @@ -130,8 +128,8 @@ var up = up || {}; ) .attr('href', 'javascript:;') .append('  ') - .click(function() { - removeParameter($(this), that); + .click(function () { + removeParameter($(this)); }) ) ); @@ -142,23 +140,20 @@ var up = up || {}; return false; }; - var removeParameter = function(link, that) { - $(link) - .parent() - .parent() - .remove(); + var removeParameter = function (link) { + $(link).parent().parent().remove(); }; - var addValue = function(link, that) { - var paramPath; + var addValue = function (link, that) { + var parameterPath; link = $(link); - paramPath = getParameterPath(link.attr('paramName'), that); + parameterPath = getParameterPath(link.attr('paramName'), that); link.before( $(document.createElement('div')) .append( $(document.createElement('input')) - .attr({name: paramPath, type: 'text'}) + .attr({name: parameterPath, type: 'text'}) .addClass( that.options.displayClasses.inputElementExtraClass ) @@ -176,35 +171,30 @@ var up = up || {}; .append( '  ' ) - .click(function() { - removeValue($(this), that); + .click(function () { + removeValue($(this)); }) ) ); }; - var removeValue = function(link, that) { - $(link) - .parent() - .remove(); + var removeValue = function (link) { + $(link).parent().remove(); }; /** * Display the parameter adding dialog. We ask a user to choose a parameter * name so we can appropriately set the name of the new input element. */ - var showAddParameterDialog = function(that) { + var showAddParameterDialog = function (that) { var dialog = that.options.dialog; if (that.options.dialogInitialized) { // if the dialog has already been initialized, clear the previous value and open it - dialog - .find('form') - .get(0) - .reset(); + dialog.find('form').get(0).reset(); dialog.dialog('open'); } else { // set the dialog form to add the appropriate parameter - dialog.find('form').submit(function() { + dialog.find('form').submit(function () { return addParameter(this, that); }); @@ -214,31 +204,31 @@ var up = up || {}; } }; - up.ParameterEditor = function(container, options) { + up.ParameterEditor = function (container, options) { var that = fluid.initView('up.ParameterEditor', container, options); container = $(container); // initialize actions for parameter value adding and deletion container .find('.' + that.options.displayClasses.deleteItemLink) - .click(function() { - removeParameter(this, that); + .click(function () { + removeParameter(this); }); container .find('.' + that.options.displayClasses.deleteValueLink) - .click(function() { - removeValue(this, that); + .click(function () { + removeValue(this); }); container .find('.' + that.options.displayClasses.addValueLink) - .click(function() { + .click(function () { addValue(this, that); }); // initialize the action to add a new parameter container .find('.' + that.options.displayClasses.addItemLink) - .click(function() { + .click(function () { showAddParameterDialog(that); }); diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-portlet-browser.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-portlet-browser.js index dec029353fc..49cb458d0ff 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-portlet-browser.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-portlet-browser.js @@ -19,7 +19,7 @@ 'use strict'; var up = up || {}; -(function($, fluid) { +(function ($, fluid) { /** * DefaultPortletSearchView component provides a generic portlet searching * interface to serve as a view subcomponent of PortletBrowser. This @@ -50,7 +50,11 @@ var up = up || {}; * @param {Object} parent PortletBrowser component (overall that) * @param {Object} options configuration options for the components */ - up.DefaultPortletSearchView = function(container, portletBrowser, options) { + up.DefaultPortletSearchView = function ( + container, + portletBrowser, + options + ) { var that; var cutpoints; var tree; @@ -80,7 +84,7 @@ var up = up || {}; { type: 'jQuery', func: 'submit', - args: function() { + args: function () { // Upon form submission, fire the portlet search // event on the parent component portletBrowser.events.onPortletSearch.fire( @@ -100,7 +104,7 @@ var up = up || {}; { type: 'jQuery', func: 'keyup', - args: function() { + args: function () { // As the user updates the search field, fire // the portlet search event on the parent // component @@ -115,7 +119,7 @@ var up = up || {}; { type: 'jQuery', func: 'focus', - args: function() { + args: function () { // When the search input field is focused, check // if the input value matches the search // invitation message. If it does, clear out @@ -131,14 +135,14 @@ var up = up || {}; { type: 'jQuery', func: 'blur', - args: function() { + args: function () { // When the search input field loses focus, check // if the input value is empty. If it is, set // the value back to the search invitation message. - var str; - str = $.trim($(this).val()); - if (str === '') { + var string_; + string_ = $.trim($(this).val()); + if (string_ === '') { $(this).val( that.options.searchInvitationMessage ); @@ -210,7 +214,7 @@ var up = up || {}; * @param {Object} component Container the element containing the fragment browser * @param {Object} options configuration options for the components */ - up.PortletBrowser = function(container, overallThat, options) { + up.PortletBrowser = function (container, overallThat, options) { // construct the new component var that = fluid.initView('up.PortletBrowser', container, options); @@ -219,7 +223,7 @@ var up = up || {}; that.options.portletRegistry.options || {}; that.options.portletRegistry.options.listeners = that.options.portletRegistry.options.listeners || {}; - that.options.portletRegistry.options.listeners.onLoad = function() { + that.options.portletRegistry.options.listeners.onLoad = function () { initializePortletBrowser(that, overallThat, container); }; that.registry = fluid.initSubcomponent(that, 'portletRegistry', [ @@ -231,7 +235,7 @@ var up = up || {}; return that; }; - var initializePortletBrowser = function(that, overallThat, container) { + var initializePortletBrowser = function (that, overallThat, container) { // initialize a state map for this component that.state = {}; @@ -281,24 +285,24 @@ var up = up || {}; }, listeners: { onLoad: null, - onCategorySelect: function(that, category) { + onCategorySelect: function (that, category) { that.state.currentCategory = category.id; that.categoryListView.refresh(); that.portletListView.refresh(); }, - onStateSelect: function(that, state) { + onStateSelect: function (that, state) { that.state.currentState = state; that.portletListView.refresh(); }, - onPortletSearch: function(that, searchTerm, submitted) { + onPortletSearch: function (that, searchTerm) { searchTerm = $.trim(searchTerm); that.state.portletRegex = - searchTerm.length > 0 ? - new RegExp(up.escapeSpecialChars(searchTerm), 'i') : - undefined; + searchTerm.length > 0 + ? new RegExp(up.escapeSpecialChars(searchTerm), 'i') + : undefined; that.portletListView.refresh(); }, - onPortletSelect: function(that, portlet) { + onPortletSelect: function (that) { that.portletListView.refresh(); }, onPortletDrag: null, diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-portlet-registry.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-portlet-registry.js index 254347a29d9..122d0816fe8 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-portlet-registry.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-portlet-registry.js @@ -41,11 +41,11 @@ var up = up || {}; * Name of the pseudo "All Categories" category * */ -(function($, fluid) { +(function ($, fluid) { /** * Construct a new portlet from the backend-provided JSON. */ - var Portlet = function(json) { + var Portlet = function (json) { return { id: json.id, description: json.description, @@ -61,7 +61,7 @@ var up = up || {}; /** * Construct a new category from the backend-provided JSON. */ - var Category = function(json) { + var Category = function (json) { return { id: json.id, name: json.name, @@ -73,48 +73,48 @@ var up = up || {}; }; }; - var processCategory = function(that, category) { + var processCategory = function (that, category) { // If this category isn't already present in the array, // perform all necessary processing for it and its children, // then return the category - if (!that.state.categories[category.id]) { + if (that.state.categories[category.id]) { + // otherwise just return the already-cached category + return that.state.categories[category.id]; + } else { var c = new Category(category); // Process each of the member categories. First add each // category and its deep members to the list of deep members // for this category, then do the same for each of its deep // member portlets. - $(category.categories).each(function(idx, subCategory) { + $(category.categories).each(function (index, subCategory) { subCategory = processCategory(that, subCategory); c.categories.push(subCategory); - c.categories[subCategory.id] = - c.categories[c.categories.length - 1]; + c.categories[subCategory.id] = c.categories.at(-1); // add the subcategory to the deep categories array if (!c.deepCategories[subCategory.id]) { c.deepCategories.push(subCategory); - c.deepCategories[subCategory.id] = - c.deepCategories[c.deepCategories.length - 1]; + c.deepCategories[subCategory.id] = c.deepCategories.at(-1); } // add all deep member categories of this subcategory // to the deep members array - $(subCategory.deepCategories).each(function(idx, member) { + $(subCategory.deepCategories).each(function (index, member) { if (!c.deepCategories[member.id]) { c.deepCategories.push(member); - c.deepCategories[member.id] = - c.deepCategories[c.deepCategories.length - 1]; + c.deepCategories[member.id] = c.deepCategories.at(-1); } }); // add all deep member portlets of this subcategory to the // deep members array - $(subCategory.deepPortlets).each(function(idx, member) { + $(subCategory.deepPortlets).each(function (index, member) { if (!c.deepPortlets['portlet.' + member.id]) { c.deepPortlets.push(member); c.deepPortlets['portlet.' + member.id] = - c.deepPortlets[c.deepPortlets.length - 1]; + c.deepPortlets.at(-1); } }); }); @@ -122,18 +122,17 @@ var up = up || {}; // Process each of the direct member portlets. First add // each portlet to the cached portlet list, then add it // to the list of deep members for this portlet category. - $(category.channels).each(function(idx, json) { + $(category.channels).each(function (index, json) { var portlet = new Portlet(json); c.portlets.push(portlet); - c.portlets['portlet.' + portlet.id] = - c.portlets[c.portlets.length - 1]; + c.portlets['portlet.' + portlet.id] = c.portlets.at(-1); // add the portlet to the cached list if (!that.state.portlets['portlet.' + portlet.id]) { that.state.portlets.push(portlet); that.state.portlets['portlet.' + portlet.id] = - that.state.portlets[that.state.portlets.length - 1]; + that.state.portlets.at(-1); } // add it to the list of deep members if (!c.deepPortlets['portlet.' + portlet.id]) { @@ -145,26 +144,22 @@ var up = up || {}; // add this category to the cached category list that.state.categories.push(c); - that.state.categories[c.id] = - that.state.categories[that.state.categories.length - 1]; + that.state.categories[c.id] = that.state.categories.at(-1); return c; - } else { - // otherwise just return the already-cached category - return that.state.categories[category.id]; } }; - var getRegistry = function(that) { + var getRegistry = function (that) { $.ajax({ url: that.options.portletListUrl, - success: function(data) { + success: function (data) { // add the reported fragments to the state array, indexing // each by fragment owner username to expedite future lookups that.state = that.state || {}; that.state.portlets = []; that.state.categories = []; - $(data.registry.categories).each(function(idx, category) { + $(data.registry.categories).each(function (index, category) { processCategory(that, category); }); @@ -191,7 +186,7 @@ var up = up || {}; * @param {Object} component Container the element containing the fragment browser * @param {Object} options configuration options for the components */ - up.PortletRegistry = function(container, options) { + up.PortletRegistry = function (container, options) { // construct the new component var that = fluid.initView('up.PortletRegistry', container, options); @@ -203,7 +198,7 @@ var up = up || {}; * Refresh the cached category and portlet information by * making a fresh request to the backend portlet registry service. */ - that.refreshRegistry = function() { + that.refreshRegistry = function () { getRegistry(that); }; @@ -213,7 +208,7 @@ var up = up || {}; * @param id {Number} portlet ID * @return {Object} portlet */ - that.getPortlet = function(id) { + that.getPortlet = function (id) { return that.state.portlets['portlet.' + id]; }; @@ -223,7 +218,7 @@ var up = up || {}; * * @param key {String} category key */ - that.getCategory = function(key) { + that.getCategory = function (key) { return that.state.categories[key]; }; @@ -236,10 +231,10 @@ var up = up || {}; * deep member portlets of the specified category, and * false for solely the direct members */ - that.getMemberPortlets = function(key, deepMembers) { - return deepMembers ? - that.state.categories[key].deepPortlets : - that.state.categories[key].portlets; + that.getMemberPortlets = function (key, deepMembers) { + return deepMembers + ? that.state.categories[key].deepPortlets + : that.state.categories[key].portlets; }; /** @@ -251,17 +246,17 @@ var up = up || {}; * deep member categories of the specified category, and * false for solely the direct members */ - that.getMemberCategories = function(key, deepMembers) { - return deepMembers ? - that.state.categories[key].deepCategories : - that.state.categories[key].categories; + that.getMemberCategories = function (key, deepMembers) { + return deepMembers + ? that.state.categories[key].deepCategories + : that.state.categories[key].categories; }; /** * Return an array of all categories retrieved for the current * portlet registry request. */ - that.getAllCategories = function() { + that.getAllCategories = function () { return that.state.categories; }; @@ -269,7 +264,7 @@ var up = up || {}; * Return an array of all portlets retrieved for the current * portlet registry request. */ - that.getAllPortlets = function() { + that.getAllPortlets = function () { return that.state.portlets; }; diff --git a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-rating-option.js b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-rating-option.js index 6f91ba1701d..7b89b54f896 100644 --- a/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-rating-option.js +++ b/uPortal-webapp/src/main/webapp/media/skins/common/javascript/uportal/up-rating-option.js @@ -18,8 +18,8 @@ */ var up = up || {}; -(function($) { - up.notify = function(messageText, messageLayout, messageType) { +(function ($) { + up.notify = function (messageText, messageLayout, messageType) { $('#up-notification').noty({ text: messageText, layout: messageLayout, @@ -27,7 +27,7 @@ var up = up || {}; }); }; - $.fn.createRatingModal = function() { + $.fn.createRatingModal = function () { var that = this; var modalTitle = [ '