diff --git a/package-lock.json b/package-lock.json index e86541007..43ab6172b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,6 +93,7 @@ "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-vue": "^9.28.0", "git-describe": "^4.1.1", + "gitconfig": "^2.0.8", "googleapis": "^142.0.0", "jsdom": "^25.0.1", "mime-types": "^2.1.35", @@ -155,6 +156,26 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/types": { "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", @@ -2639,6 +2660,17 @@ "node": ">=16.5.0" } }, + "node_modules/abind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/abind/-/abind-1.0.5.tgz", + "integrity": "sha512-dbaEZphdPje0ihqSdWg36Sb8S20TuqQomiz2593oIx+enQ9Q4vDZRjIzhnkWltGRKVKqC28kTribkgRLBexWVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6", + "npm": ">=3" + } + }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", @@ -2811,6 +2843,20 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/argx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/argx/-/argx-3.0.2.tgz", + "integrity": "sha512-PUyi1r14HG1AH6raqPEW8+vKNWfvHrmerdBXnf5iz7JOnO1hRaG1cGsH9eay/y8dUIreN7NxSEfK208UCGd0wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iftype": "^3.0.0" + }, + "engines": { + "node": ">=4", + "npm": ">=2" + } + }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -2828,6 +2874,57 @@ "node": ">=8" } }, + "node_modules/arrayreduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arrayreduce/-/arrayreduce-2.1.0.tgz", + "integrity": "sha512-I5MwrsPJ4faMuuPXM8+EgEy83G16i+FqegFhhHX3geDJbyaqPDWNrVjkrRg9SZq5mepEZdNg36SDPOhiKPWTLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/askconfig": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/askconfig/-/askconfig-4.0.4.tgz", + "integrity": "sha512-fjB/vmAlUKxGVqcz4mLub3xF8m9rkazhqcXRvrDzeey0iaLhcAg2K8bhJL7pKjE2dFP9qDGv3+yXovYMV9XBJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "argx": "^4.0.2", + "cli-color": "^1.4.0", + "objnest": "^5.0.6" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/askconfig/node_modules/argx": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/argx/-/argx-4.0.4.tgz", + "integrity": "sha512-XLWeRTNBJRzQkbMweLIxdtnvpE7iYUBraPwrIJX57FjL4D1RHLMJRM1AyEP6KZHgvjW7TSnxF8MpGic7YdTGOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "iftype": "^4.0.9" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/askconfig/node_modules/iftype": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/iftype/-/iftype-4.0.9.tgz", + "integrity": "sha512-01Klo+04dkDzY193D1GVfOdQzmpqaYFJTAlZKRztkT/BOaU7sSnvxGimSln+7DMqLUP4tpDTNFgxqVPLYZVypA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -2937,6 +3034,17 @@ "axios": "0.x || 1.x" } }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3416,6 +3524,31 @@ "node": ">=6" } }, + "node_modules/cli-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", + "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "dev": true, + "license": "ISC", + "dependencies": { + "ansi-regex": "^2.1.1", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.5" + } + }, + "node_modules/cli-color/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -3473,6 +3606,17 @@ "node": ">=12" } }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3591,6 +3735,15 @@ "typedarray": "^0.0.6" } }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -3788,6 +3941,20 @@ "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "dev": true }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/d3-array": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", @@ -4164,6 +4331,62 @@ "node": ">= 0.4" } }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -4598,6 +4821,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -4662,6 +4901,17 @@ "node": ">=0.10.0" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/event-stream": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", @@ -4705,6 +4955,49 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execcli": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/execcli/-/execcli-5.0.6.tgz", + "integrity": "sha512-du+uy/Ew2P90PKjSHI89u/XuqVaBDzvaJ6ePn40JaOy7owFQNsYDbd5AoR5A559HEAb1i5HO22rJxtgVonf5Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argx": "^4.0.0", + "arrayreduce": "^2.1.0", + "findout": "^3.0.2", + "hasbin": "^1.2.3", + "stringcase": "^4.3.0" + }, + "engines": { + "node": ">=8", + "npm": ">=4" + } + }, + "node_modules/execcli/node_modules/argx": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/argx/-/argx-4.0.4.tgz", + "integrity": "sha512-XLWeRTNBJRzQkbMweLIxdtnvpE7iYUBraPwrIJX57FjL4D1RHLMJRM1AyEP6KZHgvjW7TSnxF8MpGic7YdTGOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "iftype": "^4.0.9" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/execcli/node_modules/iftype": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/iftype/-/iftype-4.0.9.tgz", + "integrity": "sha512-01Klo+04dkDzY193D1GVfOdQzmpqaYFJTAlZKRztkT/BOaU7sSnvxGimSln+7DMqLUP4tpDTNFgxqVPLYZVypA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, "node_modules/executable": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", @@ -4717,6 +5010,16 @@ "node": ">=4" } }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -4890,6 +5193,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/findout": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/findout/-/findout-3.0.2.tgz", + "integrity": "sha512-eatRX+s8jm8ml/S9Y5NBBjR4W8i7IeEmyddB3Lidak/nPZNfDxGzLEIaMKgeNj5/LHA1i0dC4Gwsb13H1bx+AA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=7.6", + "npm": ">=4" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -5285,6 +5599,26 @@ "semver": "bin/semver" } }, + "node_modules/gitconfig": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/gitconfig/-/gitconfig-2.0.8.tgz", + "integrity": "sha512-qOB1QswIHFNKAOPN0pEu7U1iyajLBv3Tz5X630UlkAtKM904I4dO7XIjH84wmR2SUVAgaVR99UC9U4ABJujAJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "argx": "^3.0.0", + "arrayreduce": "^2.1.0", + "askconfig": "^4.0.2", + "co": "^4.6.0", + "execcli": "^5.0.2", + "lodash.get": "^4.4.2", + "objnest": "^5.0.3" + }, + "engines": { + "node": ">=6", + "npm": ">=3" + } + }, "node_modules/gl-matrix": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", @@ -5584,6 +5918,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasbin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "integrity": "sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "~1.5" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/hasbin/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true, + "license": "MIT" + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -5703,6 +6057,20 @@ } ] }, + "node_modules/iftype": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/iftype/-/iftype-3.0.2.tgz", + "integrity": "sha512-vA/NSyCG3E7XXWC1hmbEDj8WvsduSzLblmj4m2Idywx8YC6CKqGTYzrnoxbMrC+qBcHz85P7uwBwYEY2rX1jvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.11.6" + }, + "engines": { + "node": ">=4", + "npm": ">=2" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -5911,6 +6279,13 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-retry-allowed": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", @@ -6415,6 +6790,13 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -6512,6 +6894,16 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, "node_modules/magic-string": { "version": "0.30.11", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", @@ -6664,6 +7056,26 @@ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -7448,6 +7860,13 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true, + "license": "ISC" + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -7556,6 +7975,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/objnest": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/objnest/-/objnest-5.1.1.tgz", + "integrity": "sha512-C4fjNlHhUQbHiiFpgzvZse3/WUHq356Da3P8NZazg9JpPHFiQP2Y9lmYvpLU06midap0YpNz/MuA8GGSL8G0YQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "abind": "^1.0.5", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, "node_modules/ol": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/ol/-/ol-10.2.1.tgz", @@ -8221,6 +8656,13 @@ "node": ">=8.10.0" } }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true, + "license": "MIT" + }, "node_modules/regexp-to-ast": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", @@ -8852,6 +9294,17 @@ "node": ">=8" } }, + "node_modules/stringcase": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/stringcase/-/stringcase-4.3.1.tgz", + "integrity": "sha512-Ov7McNX1sFaEX9NWijD1hIOVDDhKdnFzN9tvoa1N8xgrclouhsO4kBPVrTPhjO/zP5mn1Ww03uZ2SThNMXS7zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -8976,6 +9429,20 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, + "node_modules/timers-ext": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -9164,6 +9631,13 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true, + "license": "ISC" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 7512deb22..920a4f4c1 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,10 @@ "dev": "vite --port 8080 --host --cors", "int": "vite --port 8080 --host --cors --mode integration", "prod": "vite --port 8080 --host --cors --mode production", - "preview": "npm run build:prod && vite preview --port 8080 --host --outDir dist/production", - "preview:dev": "npm run build:dev && vite preview --port 8080 --host --outDir dist/development", - "preview:int": "npm run build:int && vite preview --mode integration --port 8080 --host --outDir dist/integration", - "preview:prod": "npm run build:prod && vite preview --mode production --port 8080 --host --outDir dist/production", + "preview": "npm run build:prod && vite preview --port 8080 --host --outDir dist/prod", + "preview:dev": "npm run build:dev && vite preview --port 8080 --host --outDir dist/dev", + "preview:int": "npm run build:int && vite preview --mode integration --port 8080 --host --outDir dist/int", + "preview:prod": "npm run build:prod && vite preview --mode production --port 8080 --host --outDir dist/prod", "dev:https": "USE_HTTPS=1 npm run dev", "int:https": "USE_HTTPS=1 npm run int", "prod:https": "USE_HTTPS=1 npm run prod", @@ -126,6 +126,7 @@ "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-vue": "^9.28.0", "git-describe": "^4.1.1", + "gitconfig": "^2.0.8", "googleapis": "^142.0.0", "jsdom": "^25.0.1", "mime-types": "^2.1.35", diff --git a/vite-plugins/vite-plugin-generate-build-info.js b/vite-plugins/vite-plugin-generate-build-info.js index eadbc7c4a..cdc7c4467 100644 --- a/vite-plugins/vite-plugin-generate-build-info.js +++ b/vite-plugins/vite-plugin-generate-build-info.js @@ -1,4 +1,9 @@ -import { execSync } from 'child_process' +import { exec as execCallback } from 'node:child_process' +import { promisify } from 'node:util' + +import gitconfig from 'gitconfig' + +const exec = promisify(execCallback) /** * Javascriptifaction of @@ -11,8 +16,8 @@ import { execSync } from 'child_process' * @param {String} gitHash The current git hash * @returns {String} The git branch without "origin/" or "refs/" portion */ -function getGitBranch(gitHash) { - const headRefs = execSync('git show-ref --heads').toString().trim().split('\n') +async function getGitBranch(gitHash) { + const headRefs = (await exec('git show-ref --heads')).stdout.trim().split('\n') // we now do a grep-like operation, only keeping refs that have the hash found in gitHash // we also have to remove all prefixes on the branch, i.e. /refs/tags or /origin/ etc... const branches = headRefs @@ -22,13 +27,21 @@ function getGitBranch(gitHash) { return branches[0] } +async function getGitUser() { + return await gitconfig.get('user.name', { location: 'global' }) +} + +async function getGitUserEmail() { + return await gitconfig.get('user.email', { location: 'global' }) +} + /** * Small Rollout / Vite plugin that writes a JSON containing build information, such as date or app * version. * * The app version is received as parameter of the plugin (when added to vite plugin array) */ -export default function generateBuildInfo(version) { +export default function generateBuildInfo(staging, version) { return { name: 'vite-plugin-generate-build-info', buildEnd: { @@ -37,31 +50,45 @@ export default function generateBuildInfo(version) { if (process.env.TEST) { return } - const currentHash = execSync('git rev-parse HEAD').toString().trim() + const currentHash = (await exec('git rev-parse HEAD')).stdout.trim() // We take the version from GIT_BRANCH but if not set, then take it from git show-ref let gitBranch = process.env.GIT_BRANCH if (!gitBranch) { - gitBranch = getGitBranch(currentHash) + gitBranch = await getGitBranch(currentHash) } const now = new Date() - const localChanges = execSync('git status --porcelain').toString().trim() + const localChanges = (await exec('git status --porcelain')).stdout.trim() + + let author = process.env.COMMIT_INFO_AUTHOR + if (!author) { + author = await getGitUser() + } + let authorEmail = process.env.COMMIT_INFO_EMAIL + if (!authorEmail) { + authorEmail = await getGitUserEmail() + } + this.emitFile({ type: 'asset', fileName: `${version}/info.json`, source: JSON.stringify( { + project: 'web-mapviewer', + staging, version: version, build: { date: now.toISOString(), - author: process.env.USER, + author, + authorEmail, }, git: { branch: gitBranch, hash: currentHash, dirty: !!localChanges, localChanges: localChanges, + prNumber: process.env.PULL_REQUEST_ID, }, }, null, diff --git a/vite.config.mts b/vite.config.mts index 2a0a9d93f..07c7e7dd7 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -22,6 +22,12 @@ const __dirname = dirname(fileURLToPath(import.meta.url)) const cesiumSource = `${__dirname}/node_modules/cesium/Source` const cesiumStaticDir = `./${appVersion}/cesium/` +const stagings = { + development: 'dev', + integration: 'int', + production: 'prod', +} + /** * We use manual chunks to reduce the size of the final index.js file to improve startup * performance. @@ -43,7 +49,7 @@ export default defineConfig(({ mode }) => { build: { emptyOutDir: true, assetsDir: `${appVersion}/assets`, - outDir: `./dist/${mode}`, + outDir: `./dist/${stagings[mode]}`, rollupOptions: { output: { manualChunks, @@ -72,7 +78,7 @@ export default defineConfig(({ mode }) => { }, }, }), - generateBuildInfo(appVersion), + generateBuildInfo(stagings[mode], appVersion), // CesiumJS requires static files from the following 4 folders to be included in the build // https://cesium.com/learn/cesiumjs-learn/cesiumjs-quickstart/#install-with-npm viteStaticCopy({