From 0a645559e635fafeb1bde9478feb2a2d92a5c787 Mon Sep 17 00:00:00 2001 From: Paul Fouquet Date: Thu, 12 Oct 2023 10:19:01 +1300 Subject: [PATCH 1/5] feat: update package.json --- eslintrc.cjs | 3 +++ package.json | 27 ++++++++++++++++----------- prettierrc.cjs | 3 +++ yarn.lock | 13 ------------- 4 files changed, 22 insertions(+), 24 deletions(-) create mode 100644 eslintrc.cjs create mode 100644 prettierrc.cjs delete mode 100644 yarn.lock diff --git a/eslintrc.cjs b/eslintrc.cjs new file mode 100644 index 00000000..e0ef46b1 --- /dev/null +++ b/eslintrc.cjs @@ -0,0 +1,3 @@ +module.exports = { + ...require('@linzjs/style/.eslintrc.cjs'), +}; diff --git a/package.json b/package.json index 1eee474a..c5fbad45 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,22 @@ { - "name": "topo-workflows", - "version": "1.0.0", - "main": "index.js", - "repository": "git@github.com:linz/topo-workflows.git", - "author": "Blayne Chard ", + "name": "@linzjs/topo-workflows", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "https://github.com/linz/topo-workflows.git" + }, "license": "MIT", - "scripts": { - "format": "npx prettier . -w --ignore-path .gitignore --ignore-unknown" + "type": "module", + "author": { + "name": "Toitū Te Whenua Land Information New Zealand", + "url": "https://linz.govt.nz", + "organization": true }, - "devDependencies": { - "prettier": "^2.7.1" + "private": true, + "engines": { + "node": ">=16.0.0" }, - "dependencies": { - "yaml": "^2.3.1" + "scripts": { + "format": "npx prettier . -w --ignore-path .gitignore --ignore-unknown" } } diff --git a/prettierrc.cjs b/prettierrc.cjs new file mode 100644 index 00000000..d0b664c1 --- /dev/null +++ b/prettierrc.cjs @@ -0,0 +1,3 @@ +module.exports = { + ...require('@linzjs/style/.prettierrc.cjs'), +}; diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 48f1efef..00000000 --- a/yarn.lock +++ /dev/null @@ -1,13 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -prettier@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -yaml@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== From 5ac7a0270f48d01fa29dce3ec0b16f29e22d80e0 Mon Sep 17 00:00:00 2001 From: Paul Fouquet Date: Thu, 12 Oct 2023 10:22:21 +1300 Subject: [PATCH 2/5] feat: add formater config --- eslintrc.cjs => .eslintrc.cjs | 0 prettierrc.cjs => .prettierrc.cjs | 0 package-lock.json | 3458 +++++++++++++++++++++++++++++ package.json | 3 + 4 files changed, 3461 insertions(+) rename eslintrc.cjs => .eslintrc.cjs (100%) rename prettierrc.cjs => .prettierrc.cjs (100%) create mode 100644 package-lock.json diff --git a/eslintrc.cjs b/.eslintrc.cjs similarity index 100% rename from eslintrc.cjs rename to .eslintrc.cjs diff --git a/prettierrc.cjs b/.prettierrc.cjs similarity index 100% rename from prettierrc.cjs rename to .prettierrc.cjs diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..6a98aa6b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3458 @@ +{ + "name": "@linzjs/topo-workflows", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@linzjs/topo-workflows", + "version": "0.0.1", + "license": "MIT", + "devDependencies": { + "@linzjs/style": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "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==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "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==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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==", + "dev": true + }, + "node_modules/@linzjs/style": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@linzjs/style/-/style-5.0.0.tgz", + "integrity": "sha512-9qaMsuYYGqCGxGoSEHtExHoO/UR1wC7+eCiIXZ39/0zrWQ9CwjMVa7a6JCZKv+4kPIwhcmIYuj5upMFUAVK+vQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^6.6.0", + "@typescript-eslint/parser": "^6.6.0", + "eslint": "^8.49.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-react": "^7.33.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-simple-import-sort": "^10.0.0", + "prettier": "^3.0.3", + "typescript": "^5.2.2" + }, + "bin": { + "linz-style-install": "linz-style-install.mjs" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", + "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/type-utils": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", + "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", + "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", + "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", + "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", + "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", + "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", + "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/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/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", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/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-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@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-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", + "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "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==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "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.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "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/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "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-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "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" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "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/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", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/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/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/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/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/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", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/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/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", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "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-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/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", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "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/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index c5fbad45..1b60ac83 100644 --- a/package.json +++ b/package.json @@ -18,5 +18,8 @@ }, "scripts": { "format": "npx prettier . -w --ignore-path .gitignore --ignore-unknown" + }, + "devDependencies": { + "@linzjs/style": "^5.0.0" } } From 64150f55974ba05d33a0060a3f3f7728e0d59023 Mon Sep 17 00:00:00 2001 From: Paul Fouquet Date: Thu, 12 Oct 2023 10:26:41 +1300 Subject: [PATCH 3/5] ci: format with npm --- .github/workflows/main.yml | 7 ++----- package.json | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5c65bbed..e7168e8a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,13 +17,10 @@ jobs: node-version: "18.x" - name: Install - run: yarn + run: npm install --ci - name: format - run: yarn format - - - name: Check formatting - run: git diff --exit-code + run: npm run lint -- --fix=false # ensure eslint is not configured to --fix - name: Setup kubectl uses: azure/setup-kubectl@v3 diff --git a/package.json b/package.json index 1b60ac83..098f1308 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "node": ">=16.0.0" }, "scripts": { - "format": "npx prettier . -w --ignore-path .gitignore --ignore-unknown" + "lint": "npx eslint . --ignore-path .gitignore" }, "devDependencies": { "@linzjs/style": "^5.0.0" From e4a181eeb19a70000ff2741c892ca4ed79b48fa9 Mon Sep 17 00:00:00 2001 From: Blayne Chard Date: Thu, 12 Oct 2023 10:36:59 +1300 Subject: [PATCH 4/5] refactor: prettier and eslint --- .github/workflows/main.yml | 3 +++ package.json | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e7168e8a..0aace4a6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,6 +21,9 @@ jobs: - name: format run: npm run lint -- --fix=false # ensure eslint is not configured to --fix + + - name: format + run: npm run format -- --fix=false # ensure eslint is not configured to --fix - name: Setup kubectl uses: azure/setup-kubectl@v3 diff --git a/package.json b/package.json index 098f1308..afdeba16 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "node": ">=16.0.0" }, "scripts": { - "lint": "npx eslint . --ignore-path .gitignore" + "lint": "npx eslint . --ignore-path .gitignore", + "format": "npx prettier . -w" }, "devDependencies": { "@linzjs/style": "^5.0.0" From ca8c3488ecbe2e763b620b88f06f0fab844c6720 Mon Sep 17 00:00:00 2001 From: Blayne Chard Date: Thu, 12 Oct 2023 10:37:57 +1300 Subject: [PATCH 5/5] refactor: apply formatter --- .github/workflows/main.yml | 6 +- CONFIGURATION.md | 17 +- config/semaphores.yml | 8 +- docs/concurrency.md | 2 +- docs/training_workshop/ARGO_WORKFLOWS.md | 46 +- .../example_workflows/wf_hello_world.yaml | 6 +- .../wf_hello_world_args.yaml | 10 +- .../wf_hello_world_args_tasks.yaml | 14 +- .../example_workflows/wf_hello_world_dag.yaml | 24 +- .../example_workflows/wf_output_parallel.yaml | 38 +- templates/argo-tasks/README.md | 34 +- templates/argo-tasks/copy.yml | 23 +- templates/argo-tasks/create-manifest.yml | 52 +- templates/argo-tasks/group.yml | 12 +- templates/argo-tasks/push-to-github.yml | 32 +- templates/argo-tasks/tile-index-validate.yml | 26 +- workflows/basemaps/create-config.yaml | 16 +- workflows/basemaps/create-overview-all.yaml | 26 +- workflows/basemaps/create-overview.yaml | 24 +- workflows/basemaps/imagery-import-cogify.yml | 142 +++--- workflows/basemaps/imagery-import.yaml | 165 +++---- workflows/basemaps/mapsheet-json.yaml | 56 +-- workflows/basemaps/vector-etl.yaml | 34 +- workflows/imagery/README.md | 58 +-- .../imagery/ascii-standardise-publish.yaml | 90 ++-- workflows/imagery/publish-copy.yaml | 86 ++-- workflows/imagery/publish-odr.yaml | 90 ++-- .../imagery/standardising-publish-import.yaml | 42 +- workflows/imagery/standardising.yaml | 464 +++++++++--------- workflows/imagery/tests.yaml | 2 +- workflows/stac/stac-validate.yaml | 56 +-- workflows/test/flatten.yaml | 57 +-- workflows/test/list.yaml | 26 +- workflows/test/sleep.yml | 4 +- workflows/tiv.yml | 20 +- workflows/util/create-thumbnails.yaml | 84 ++-- 36 files changed, 922 insertions(+), 970 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0aace4a6..531a1c1a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,21 +14,21 @@ jobs: - name: Use Node.js 18.x uses: actions/setup-node@v2.2.0 with: - node-version: "18.x" + node-version: '18.x' - name: Install run: npm install --ci - name: format run: npm run lint -- --fix=false # ensure eslint is not configured to --fix - + - name: format run: npm run format -- --fix=false # ensure eslint is not configured to --fix - name: Setup kubectl uses: azure/setup-kubectl@v3 with: - version: "latest" + version: 'latest' - name: AWS Configure uses: aws-actions/configure-aws-credentials@v1.6.1 diff --git a/CONFIGURATION.md b/CONFIGURATION.md index f7ff6fb8..7789bc0a 100644 --- a/CONFIGURATION.md +++ b/CONFIGURATION.md @@ -78,12 +78,7 @@ container: env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json - args: - [ - "stac-validate", - "--recursive", - "{{inputs.parameters.location}}flat/collection.json", - ] + args: ['stac-validate', '--recursive', '{{inputs.parameters.location}}flat/collection.json'] ``` ## Workflow Performance Settings @@ -122,9 +117,9 @@ Two example workflow tasks requesting specific resources (memory and CPU) from t ```yaml - name: standardise-validate retryStrategy: - limit: "2" + limit: '2' nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' inputs: parameters: - name: file @@ -138,13 +133,13 @@ Two example workflow tasks requesting specific resources (memory and CPU) from t ephemeral-storage: 3Gi volumeMounts: - name: ephemeral - mountPath: "/tmp" + mountPath: '/tmp' ``` ```yaml - name: copy retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: file @@ -173,7 +168,7 @@ _Note: the Argo Workflows flowchart UI refers to pods as “nodes”._ In the standardising workflow, the `aws-list` task creates an output of a list of lists. Each `standardise-validate` task pod receives a list of files to process as an input. ```yaml -withParam: "{{tasks.aws-list.outputs.parameters.files}}" +withParam: '{{tasks.aws-list.outputs.parameters.files}}' ``` For example, `aws-list` output with a `group` size of 4 set: diff --git a/config/semaphores.yml b/config/semaphores.yml index e4d984e3..2860da26 100644 --- a/config/semaphores.yml +++ b/config/semaphores.yml @@ -4,7 +4,7 @@ metadata: name: semaphores namespace: argo data: - standardising: "2" # Limit of how many standardising workflow instances can run at the same time - bulk: "4" # Limit of how many bulk workflow instances can run at the same time - bulkcopy: "8" # Limit of how many publish-copy workflow instances can run at the same time - basemaps_import: "10" # Limit of how many basemaps import workflow instances can run at the same time + standardising: '2' # Limit of how many standardising workflow instances can run at the same time + bulk: '4' # Limit of how many bulk workflow instances can run at the same time + bulkcopy: '8' # Limit of how many publish-copy workflow instances can run at the same time + basemaps_import: '10' # Limit of how many basemaps import workflow instances can run at the same time diff --git a/docs/concurrency.md b/docs/concurrency.md index c8985305..c321ad33 100644 --- a/docs/concurrency.md +++ b/docs/concurrency.md @@ -12,7 +12,7 @@ metadata: name: semaphores namespace: argo data: - standardising: "2" + standardising: '2' ``` which shows a limit of `2` added to the key `standardising`. This can then diff --git a/docs/training_workshop/ARGO_WORKFLOWS.md b/docs/training_workshop/ARGO_WORKFLOWS.md index 49b8356b..98a1e06f 100644 --- a/docs/training_workshop/ARGO_WORKFLOWS.md +++ b/docs/training_workshop/ARGO_WORKFLOWS.md @@ -119,7 +119,7 @@ metadata: namespace: argo spec: nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main templates: - name: main @@ -129,9 +129,9 @@ spec: template: say-hello-template - name: say-hello-template container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3' command: [echo] - args: ["hello world"] + args: ['hello world'] ``` Example workflow file: [wf_hello_world.yaml](example_workflows/wf_hello_world.yaml) @@ -142,7 +142,7 @@ You will see the following specified in the example workflows for this workshop. ```yaml nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' ``` Note: prefixing the name of the workflow with `test-` prevents alerts for the workflow being sent to the `#alert-argo-workflows` Slack channel. @@ -174,7 +174,7 @@ spec: arguments: parameters: - name: message - value: "hello world" + value: 'hello world' ``` The parameter can be referenced in the workflow using Argo variables as `"{{workflow.parameters.message}}"` @@ -269,17 +269,17 @@ argo submit topo-workflows/imagery/standardising-publish-import.yaml -n argo -f _params.yaml_: ```yaml -source: "s3://linz-imagery-source-example/aerial-imagery/new-zealand/christchurch_urban_2021_0.05m_RGB/" -target: "s3://linz-imagery-example/canterbury/christchurch_2021_0.05m/rgb/2193/" -scale: "500" -group: "29" -cutline: "s3://linz-imagery-cutline-example/historical-imagery-cutlines/2023-01-16_84fd68f/SNC50451-combined.fgb" -title: "Christchurch 0.05m Urban Aerial Photos (2021)" -description: "Orthophotography within the Canterbury region captured in the 2021 flying season." -producer: "Aerial Surveys" -licensor: "Toitū Te Whenua Land Information New Zealand" -start-datetime: "2021-11-02" -end-datetime: "2021-12-02" +source: 's3://linz-imagery-source-example/aerial-imagery/new-zealand/christchurch_urban_2021_0.05m_RGB/' +target: 's3://linz-imagery-example/canterbury/christchurch_2021_0.05m/rgb/2193/' +scale: '500' +group: '29' +cutline: 's3://linz-imagery-cutline-example/historical-imagery-cutlines/2023-01-16_84fd68f/SNC50451-combined.fgb' +title: 'Christchurch 0.05m Urban Aerial Photos (2021)' +description: 'Orthophotography within the Canterbury region captured in the 2021 flying season.' +producer: 'Aerial Surveys' +licensor: 'Toitū Te Whenua Land Information New Zealand' +start-datetime: '2021-11-02' +end-datetime: '2021-12-02' ``` > **_Resources:_** [Argo CLI documentation](https://argoproj.github.io/argo-workflows/cli/argo/) - [Kubernetes Cheat Sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/) @@ -343,14 +343,14 @@ metadata: namespace: argo spec: nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: - name: message1 - value: "hello world 1" + value: 'hello world 1' - name: message2 - value: "hello world 2" + value: 'hello world 2' templates: - name: main dag: @@ -360,21 +360,21 @@ spec: arguments: parameters: - name: message - value: "{{workflow.parameters.message1}}" + value: '{{workflow.parameters.message1}}' - name: say-hello-task2 template: say-hello-template arguments: parameters: - name: message - value: "{{workflow.parameters.message2}}" + value: '{{workflow.parameters.message2}}' - name: say-hello-template inputs: parameters: - name: message container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3' command: [echo] - args: ["{{inputs.parameters.message}}"] + args: ['{{inputs.parameters.message}}'] ``` Example workflow file: [wf_hello_world_args_tasks.yaml](example_workflows/wf_hello_world_args_tasks.yaml) diff --git a/docs/training_workshop/example_workflows/wf_hello_world.yaml b/docs/training_workshop/example_workflows/wf_hello_world.yaml index 22b6ba9f..f15d45d9 100644 --- a/docs/training_workshop/example_workflows/wf_hello_world.yaml +++ b/docs/training_workshop/example_workflows/wf_hello_world.yaml @@ -6,7 +6,7 @@ metadata: namespace: argo spec: nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main templates: - name: main @@ -16,6 +16,6 @@ spec: template: say-hello-template - name: say-hello-template container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3' command: [echo] - args: ["hello world"] + args: ['hello world'] diff --git a/docs/training_workshop/example_workflows/wf_hello_world_args.yaml b/docs/training_workshop/example_workflows/wf_hello_world_args.yaml index 45758f10..038e8188 100644 --- a/docs/training_workshop/example_workflows/wf_hello_world_args.yaml +++ b/docs/training_workshop/example_workflows/wf_hello_world_args.yaml @@ -6,12 +6,12 @@ metadata: namespace: argo spec: nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: - name: message - value: "hello world" + value: 'hello world' templates: - name: main dag: @@ -21,12 +21,12 @@ spec: arguments: parameters: - name: message - value: "{{workflow.parameters.message}}" + value: '{{workflow.parameters.message}}' - name: say-hello-template inputs: parameters: - name: message container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3' command: [echo] - args: ["{{inputs.parameters.message}}"] + args: ['{{inputs.parameters.message}}'] diff --git a/docs/training_workshop/example_workflows/wf_hello_world_args_tasks.yaml b/docs/training_workshop/example_workflows/wf_hello_world_args_tasks.yaml index ef1402ea..dace2c43 100644 --- a/docs/training_workshop/example_workflows/wf_hello_world_args_tasks.yaml +++ b/docs/training_workshop/example_workflows/wf_hello_world_args_tasks.yaml @@ -6,14 +6,14 @@ metadata: namespace: argo spec: nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: - name: message1 - value: "hello world 1" + value: 'hello world 1' - name: message2 - value: "hello world 2" + value: 'hello world 2' templates: - name: main dag: @@ -23,18 +23,18 @@ spec: arguments: parameters: - name: message - value: "{{workflow.parameters.message1}}" + value: '{{workflow.parameters.message1}}' - name: say-hello-task2 template: say-hello-template arguments: parameters: - name: message - value: "{{workflow.parameters.message2}}" + value: '{{workflow.parameters.message2}}' - name: say-hello-template inputs: parameters: - name: message container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3' command: [echo] - args: ["{{inputs.parameters.message}}"] + args: ['{{inputs.parameters.message}}'] diff --git a/docs/training_workshop/example_workflows/wf_hello_world_dag.yaml b/docs/training_workshop/example_workflows/wf_hello_world_dag.yaml index f3bc55e1..60e335ec 100644 --- a/docs/training_workshop/example_workflows/wf_hello_world_dag.yaml +++ b/docs/training_workshop/example_workflows/wf_hello_world_dag.yaml @@ -6,14 +6,14 @@ metadata: namespace: argo spec: nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: - name: message1 - value: "hello world 1" + value: 'hello world 1' - name: message2 - value: "hello world 2" + value: 'hello world 2' templates: - name: main dag: @@ -23,33 +23,33 @@ spec: arguments: parameters: - name: message - value: "{{workflow.parameters.message1}}" + value: '{{workflow.parameters.message1}}' - name: say-hello-task2 template: say-hello-template arguments: parameters: - name: message - value: "{{workflow.parameters.message2}}" - depends: "say-hello-task1" + value: '{{workflow.parameters.message2}}' + depends: 'say-hello-task1' - name: say-hello-task3 template: say-hello-template arguments: parameters: - name: message - value: "say hello task 3" - depends: "say-hello-task1" + value: 'say hello task 3' + depends: 'say-hello-task1' - name: say-hello-task4 template: say-hello-template arguments: parameters: - name: message - value: "say hello task 4" - depends: "say-hello-task2 && say-hello-task3" + value: 'say hello task 4' + depends: 'say-hello-task2 && say-hello-task3' - name: say-hello-template inputs: parameters: - name: message container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/topo-imagery:v3' command: [echo] - args: ["{{inputs.parameters.message}}"] + args: ['{{inputs.parameters.message}}'] diff --git a/docs/training_workshop/example_workflows/wf_output_parallel.yaml b/docs/training_workshop/example_workflows/wf_output_parallel.yaml index 51cc36f9..967b1fc5 100644 --- a/docs/training_workshop/example_workflows/wf_output_parallel.yaml +++ b/docs/training_workshop/example_workflows/wf_output_parallel.yaml @@ -6,13 +6,13 @@ metadata: spec: parallelism: 20 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' serviceAccountName: workflow-runner-sa entrypoint: main arguments: parameters: - name: uri - value: "s3://linz-imagery-staging/test/stac-validate/" + value: 's3://linz-imagery-staging/test/stac-validate/' templateDefaults: container: imagePullPolicy: Always @@ -25,39 +25,39 @@ spec: arguments: parameters: - name: uri - value: "{{workflow.parameters.uri}}" + value: '{{workflow.parameters.uri}}' - name: include - value: "json$" + value: 'json$' - name: stac-print-path template: stac-print-path arguments: parameters: - name: file - value: "{{item}}" - depends: "aws-list" - withParam: "{{tasks.aws-list.outputs.parameters.files}}" + value: '{{item}}' + depends: 'aws-list' + withParam: '{{tasks.aws-list.outputs.parameters.files}}' - name: aws-list inputs: parameters: - name: uri - name: include container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:v2" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:v2' command: [node, /app/index.js] env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json args: [ - "list", - "--verbose", - "--include", - "{{inputs.parameters.include}}", - "--group", - "4", - "--output", - "/tmp/file_list.json", - "{{inputs.parameters.uri}}", + 'list', + '--verbose', + '--include', + '{{inputs.parameters.include}}', + '--group', + '4', + '--output', + '/tmp/file_list.json', + '{{inputs.parameters.uri}}', ] outputs: parameters: @@ -69,12 +69,12 @@ spec: parameters: - name: file script: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:v2" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:v2' env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json command: - - "bash" + - 'bash' source: | PATH_OUT=$(echo "{{inputs.parameters.file}}" | sed 's/,/ /g; s/\[/ /g; s/\]/ /g') echo $PATH_OUT diff --git a/templates/argo-tasks/README.md b/templates/argo-tasks/README.md index 7f2ad64a..4b956085 100644 --- a/templates/argo-tasks/README.md +++ b/templates/argo-tasks/README.md @@ -95,13 +95,13 @@ Copy the input parameter manifest file without overriding. arguments: parameters: - name: copy-option - value: "--no-clobber" + value: '--no-clobber' - name: file - value: "{{item}}" + value: '{{item}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" - depends: "create-manifest" - withParam: "{{tasks.create-manifest.outputs.parameters.files}}" + value: '{{workflow.parameters.version-argo-tasks}}' + depends: 'create-manifest' + withParam: '{{tasks.create-manifest.outputs.parameters.files}}' ``` ## argo-tasks/create-manifest - `tpl-create-manifest` @@ -121,19 +121,19 @@ Create a manifest file for a user specified source and target that includes `.ti arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: target - value: "{{workflow.parameters.target}}" + value: '{{workflow.parameters.target}}' - name: include - value: ".tiff?$|.json$|.tfw$" + value: '.tiff?$|.json$|.tfw$' - name: exclude - value: "" + value: '' - name: group - value: "1000" + value: '1000' - name: group-size - value: "100Gi" + value: '100Gi' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' ``` ## argo-tasks/push-to-github - `tpl-push-to-github` @@ -151,12 +151,12 @@ See https://github.com/linz/argo-tasks#stac-github-import arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: target - value: "{{workflow.parameters.target}}" + value: '{{workflow.parameters.target}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' - name: repository - value: "elevation" - depends: "copy-with-github" + value: 'elevation' + depends: 'copy-with-github' ``` diff --git a/templates/argo-tasks/copy.yml b/templates/argo-tasks/copy.yml index bf8a27c0..952e623a 100644 --- a/templates/argo-tasks/copy.yml +++ b/templates/argo-tasks/copy.yml @@ -12,7 +12,7 @@ spec: templates: - name: main retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: file @@ -20,19 +20,19 @@ spec: - name: version-argo-tasks description: version of argo-tasks to use - default: "v2" + default: 'v2' - name: copy-option description: --no-clobber Skip overwriting existing files. --force Overwrite all files. --force-no-clobber Overwrite only changed files, skip unchanged files. - default: "--no-clobber" + default: '--no-clobber' enum: - - "--no-clobber" - - "--force" - - "--force-no-clobber" + - '--no-clobber' + - '--force' + - '--force-no-clobber' - name: aws-role-config-path description: The path(s) to the aws configs that enable writing to buckets - default: "s3://linz-bucket-config/config-write.imagery.json,s3://linz-bucket-config/config-write.elevation.json,s3://linz-bucket-config/config-write.topographic.json" + default: 's3://linz-bucket-config/config-write.imagery.json,s3://linz-bucket-config/config-write.elevation.json,s3://linz-bucket-config/config-write.topographic.json' container: image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{=sprig.trim(workflow.parameters['version-argo-tasks'])}}" @@ -43,10 +43,5 @@ spec: command: [node, /app/index.js] env: - name: AWS_ROLE_CONFIG_PATH - value: "{{inputs.parameters.aws-role-config-path}},s3://linz-bucket-config/config.json" - args: - [ - "copy", - "{{inputs.parameters.copy-option}}", - "{{inputs.parameters.file}}", - ] + value: '{{inputs.parameters.aws-role-config-path}},s3://linz-bucket-config/config.json' + args: ['copy', '{{inputs.parameters.copy-option}}', '{{inputs.parameters.file}}'] diff --git a/templates/argo-tasks/create-manifest.yml b/templates/argo-tasks/create-manifest.yml index 2c0f3a36..b796ab42 100644 --- a/templates/argo-tasks/create-manifest.yml +++ b/templates/argo-tasks/create-manifest.yml @@ -21,35 +21,35 @@ spec: - name: version-argo-tasks description: version of argo-tasks to use - default: "v2" + default: 'v2' - name: include description: A regular expression to match object path(s) or name(s) from within the source path to include in the copy - default: ".tiff?$|.json$|.tfw$" + default: '.tiff?$|.json$|.tfw$' - name: exclude description: A regular expression to match object path(s) or name(s) from within the source path to exclude in the copy - default: "" + default: '' - name: copy-option description: --no-clobber Skip overwriting existing files. --force Overwrite all files. --force-no-clobber Overwrite only changed files, skip unchanged files. - default: "--no-clobber" + default: '--no-clobber' enum: - - "--no-clobber" - - "--force" - - "--force-no-clobber" + - '--no-clobber' + - '--force' + - '--force-no-clobber' - name: group description: The maximum number of files for each pod to copy (will use the value of `group` or `group-size` that is reached first) - default: "1000" + default: '1000' - name: group-size description: The maximum group size of files for each pod to copy (will use the value of `group` or `group-size` that is reached first) - default: "100Gi" + default: '100Gi' - name: transform description: String to be transformed from source to target to renamed filenames, e.g. `f.replace("text to replace", "new_text_to_use")`. Leave as `f` for no transformation. - default: "f" + default: 'f' outputs: parameters: @@ -65,21 +65,21 @@ spec: value: s3://linz-bucket-config/config.json args: [ - "create-manifest", - "--verbose", - "--include", - "{{=sprig.trim(inputs.parameters.include)}}", - "--exclude", - "{{inputs.parameters.exclude}}", - "--group", - "{{=sprig.trim(inputs.parameters.group)}}", - "--group-size", + 'create-manifest', + '--verbose', + '--include', + '{{=sprig.trim(inputs.parameters.include)}}', + '--exclude', + '{{inputs.parameters.exclude}}', + '--group', + '{{=sprig.trim(inputs.parameters.group)}}', + '--group-size', "{{=sprig.trim(inputs.parameters['group-size'])}}", - "--output", - "/tmp/file_list.json", - "--target", - "{{=sprig.trim(inputs.parameters.target)}}", - "{{=sprig.trim(inputs.parameters.source)}}", - "--transform", - "{{=sprig.trim(inputs.parameters.transform)}}", + '--output', + '/tmp/file_list.json', + '--target', + '{{=sprig.trim(inputs.parameters.target)}}', + '{{=sprig.trim(inputs.parameters.source)}}', + '--transform', + '{{=sprig.trim(inputs.parameters.transform)}}', ] diff --git a/templates/argo-tasks/group.yml b/templates/argo-tasks/group.yml index 14803121..58af7e74 100644 --- a/templates/argo-tasks/group.yml +++ b/templates/argo-tasks/group.yml @@ -29,7 +29,7 @@ spec: - name: version description: argo-task Container version to use - default: "v2" + default: 'v2' outputs: parameters: @@ -57,13 +57,13 @@ spec: path: /tmp/group/output/ container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{= inputs.parameters.version }}" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{= inputs.parameters.version }}' command: [node, /app/index.js] env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json args: - - "group" - - "--verbose" - - "--size={{= inputs.parameters.size }}" - - "--from-file={{= inputs.artifacts.input.path }}" + - 'group' + - '--verbose' + - '--size={{= inputs.parameters.size }}' + - '--from-file={{= inputs.artifacts.input.path }}' diff --git a/templates/argo-tasks/push-to-github.yml b/templates/argo-tasks/push-to-github.yml index 4d84f701..64bb59ca 100644 --- a/templates/argo-tasks/push-to-github.yml +++ b/templates/argo-tasks/push-to-github.yml @@ -12,7 +12,7 @@ spec: templates: - name: main retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: source @@ -23,14 +23,14 @@ spec: - name: version-argo-tasks description: version of argo-tasks to use - default: "v2" + default: 'v2' - name: repository description: Repository Name (only used when identified that push to GitHub is required) - default: "elevation" + default: 'elevation' enum: - - "elevation" - - "imagery" + - 'elevation' + - 'imagery' container: image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{=sprig.trim(inputs.parameters['version-argo-tasks'])}}" @@ -38,21 +38,21 @@ spec: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json - name: GIT_AUTHOR_NAME - value: "{{=sprig.regexFind(inputs.parameters.repository, inputs.parameters.target)}}[bot]" + value: '{{=sprig.regexFind(inputs.parameters.repository, inputs.parameters.target)}}[bot]' - name: GIT_AUTHOR_EMAIL - value: "{{=sprig.regexFind(inputs.parameters.repository, inputs.parameters.target)}}@linz.govt.nz" + value: '{{=sprig.regexFind(inputs.parameters.repository, inputs.parameters.target)}}@linz.govt.nz' volumeMounts: - name: secret-volume - mountPath: "/root/.ssh/" + mountPath: '/root/.ssh/' command: [node, /app/index.js] args: [ - "stac", - "github-import", - "--source", - "{{=sprig.trim(inputs.parameters.source)}}", - "--target", - "{{=sprig.trim(inputs.parameters.target)}}", - "--repo-name", - "linz/{{=sprig.regexFind(inputs.parameters.repository, inputs.parameters.target)}}", + 'stac', + 'github-import', + '--source', + '{{=sprig.trim(inputs.parameters.source)}}', + '--target', + '{{=sprig.trim(inputs.parameters.target)}}', + '--repo-name', + 'linz/{{=sprig.regexFind(inputs.parameters.repository, inputs.parameters.target)}}', ] diff --git a/templates/argo-tasks/tile-index-validate.yml b/templates/argo-tasks/tile-index-validate.yml index 704227ae..76235eac 100644 --- a/templates/argo-tasks/tile-index-validate.yml +++ b/templates/argo-tasks/tile-index-validate.yml @@ -18,27 +18,27 @@ spec: - name: source_epsg description: Force source EPSG, "" will attempt to load EPSG from the source tiffs - default: "" + default: '' - name: source description: Location to list - default: "" + default: '' - name: include description: Limit the input list to this regexp - default: "" + default: '' - name: validate description: Validate that all input tiffs perfectly align to tile grid - default: "true" + default: 'true' - name: retile description: Output tile configuration for retiling - default: "false" + default: 'false' - name: version description: container version to use - default: "v2" + default: 'v2' outputs: artifacts: @@ -64,20 +64,20 @@ spec: none: {} container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{=inputs.parameters.version}}" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{=inputs.parameters.version}}' command: [node, /app/index.js] env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json args: - - "tileindex-validate" - - "--verbose" - - "--scale={{= inputs.parameters.scale }}" - - "--validate={{= inputs.parameters.validate }}" - - "--retile={{= inputs.parameters.retile }}" + - 'tileindex-validate' + - '--verbose' + - '--scale={{= inputs.parameters.scale }}' + - '--validate={{= inputs.parameters.validate }}' + - '--retile={{= inputs.parameters.retile }}' - "{{= sprig.empty(inputs.parameters.source_epsg) ? '' : '--source-epsg=' + inputs.parameters.source_epsg }}" - "{{= sprig.empty(inputs.parameters.include) ? '' : '--include=' + inputs.parameters.include }}" - - "{{= sprig.trim(inputs.parameters.source) }}" + - '{{= sprig.trim(inputs.parameters.source) }}' resources: requests: memory: 3.9Gi diff --git a/workflows/basemaps/create-config.yaml b/workflows/basemaps/create-config.yaml index 8a4ab816..665df910 100644 --- a/workflows/basemaps/create-config.yaml +++ b/workflows/basemaps/create-config.yaml @@ -9,9 +9,9 @@ spec: arguments: parameters: - name: version_basemaps_cli - value: "v6" + value: 'v6' - name: location - value: "s3://bucket/path/to" + value: 's3://bucket/path/to' templateDefaults: container: imagePullPolicy: Always @@ -24,10 +24,10 @@ spec: arguments: parameters: - name: location - value: "{{workflow.parameters.location}}" + value: '{{workflow.parameters.location}}' - name: create-config retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: location @@ -39,15 +39,15 @@ spec: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.basemaps.json args: - - "config" - - "{{ inputs.parameters.location }}" + - 'config' + - '{{ inputs.parameters.location }}' outputs: parameters: - name: url description: Basemaps URL to view the imagery valueFrom: - path: "/tmp/cogify/config-url" + path: '/tmp/cogify/config-url' - name: config description: Location of the config file valueFrom: - path: "/tmp/cogify/config-path" + path: '/tmp/cogify/config-path' diff --git a/workflows/basemaps/create-overview-all.yaml b/workflows/basemaps/create-overview-all.yaml index 4447a289..15f56367 100644 --- a/workflows/basemaps/create-overview-all.yaml +++ b/workflows/basemaps/create-overview-all.yaml @@ -7,12 +7,12 @@ metadata: spec: parallelism: 20 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: - name: version-basemaps-cli - value: "v6" + value: 'v6' templateDefaults: container: imagePullPolicy: Always @@ -27,9 +27,9 @@ spec: arguments: parameters: - name: source - value: "{{item}}" - depends: "list-imagery" - withParam: "{{tasks.list-imagery.outputs.parameters.imagery}}" + value: '{{item}}' + depends: 'list-imagery' + withParam: '{{tasks.list-imagery.outputs.parameters.imagery}}' - name: list-imagery container: @@ -43,11 +43,11 @@ spec: parameters: - name: imagery valueFrom: - path: "/tmp/imagery.json" + path: '/tmp/imagery.json' - name: create-overview retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: source @@ -63,10 +63,10 @@ spec: value: s3://linz-bucket-config/config.basemaps.json args: [ - "-V", - "create-overview", - "--source", - "{{inputs.parameters.source}}", - "--output", - "{{inputs.parameters.source}}", + '-V', + 'create-overview', + '--source', + '{{inputs.parameters.source}}', + '--output', + '{{inputs.parameters.source}}', ] diff --git a/workflows/basemaps/create-overview.yaml b/workflows/basemaps/create-overview.yaml index 350885f6..38fe1e94 100644 --- a/workflows/basemaps/create-overview.yaml +++ b/workflows/basemaps/create-overview.yaml @@ -9,11 +9,11 @@ spec: arguments: parameters: - name: version-basemaps-cli - value: "v6" + value: 'v6' - name: source - value: "" + value: '' - name: output - value: "" + value: '' templateDefaults: container: imagePullPolicy: Always @@ -26,12 +26,12 @@ spec: arguments: parameters: - name: source - value: "{{workflow.parameters.source}}" + value: '{{workflow.parameters.source}}' - name: output - value: "{{workflow.parameters.output}}" + value: '{{workflow.parameters.output}}' - name: create-overview retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: source @@ -48,10 +48,10 @@ spec: value: s3://linz-bucket-config/config.basemaps.json args: [ - "-V", - "create-overview", - "--source", - "{{inputs.parameters.source}}", - "--output", - "{{inputs.parameters.output}}", + '-V', + 'create-overview', + '--source', + '{{inputs.parameters.source}}', + '--output', + '{{inputs.parameters.output}}', ] diff --git a/workflows/basemaps/imagery-import-cogify.yml b/workflows/basemaps/imagery-import-cogify.yml index 5751de77..3d36f2a7 100644 --- a/workflows/basemaps/imagery-import-cogify.yml +++ b/workflows/basemaps/imagery-import-cogify.yml @@ -26,43 +26,43 @@ spec: - name: source description: Source imagery location "s3://linz-imagery" - value: "s3://linz-imagery-staging/test/sample/" + value: 's3://linz-imagery-staging/test/sample/' - name: create_pull_request - description: "Create pull request after importing imagery." - value: "aerial" + description: 'Create pull request after importing imagery.' + value: 'aerial' enum: - - "aerial" - - "individual" - - "none" + - 'aerial' + - 'individual' + - 'none' - name: category - value: "Rural Aerial Photos" + value: 'Rural Aerial Photos' enum: - - "Rural Aerial Photos" - - "Urban Aerial Photos" - - "Scanned Aerial Imagery" - - "Satellite Imagery" - - "Event" + - 'Rural Aerial Photos' + - 'Urban Aerial Photos' + - 'Scanned Aerial Imagery' + - 'Satellite Imagery' + - 'Event' - name: target description: Target location for output COGs - value: "s3://linz-basemaps/" + value: 's3://linz-basemaps/' enum: - - "s3://linz-basemaps/" - - "s3://linz-basemaps-staging/" + - 's3://linz-basemaps/' + - 's3://linz-basemaps-staging/' - name: tile_matrix description: Output tile matrix, ";" separated list - value: "NZTM2000Quad;WebMercatorQuad" + value: 'NZTM2000Quad;WebMercatorQuad' enum: - - "NZTM2000Quad" - - "WebMercatorQuad" - - "NZTM2000Quad;WebMercatorQuad" + - 'NZTM2000Quad' + - 'WebMercatorQuad' + - 'NZTM2000Quad;WebMercatorQuad' - name: cutline description: Path to cutline to apply - value: "s3://linz-basemaps-source/cutline/2020-05-07-cutline-nz-coasts-rural-and-urban.geojson" + value: 's3://linz-basemaps-source/cutline/2020-05-07-cutline-nz-coasts-rural-and-urban.geojson' - name: cutline_blend description: Blending to use for cutline see gdal_translate#cblend @@ -92,25 +92,25 @@ spec: arguments: parameters: - name: source - value: "{{ inputs.parameters.source }}" + value: '{{ inputs.parameters.source }}' - name: target - value: "{{ inputs.parameters.target }}" + value: '{{ inputs.parameters.target }}' - name: tile_matrix - value: "{{ item }}" + value: '{{ item }}' - name: cutline - value: "{{ inputs.parameters.cutline }}" + value: '{{ inputs.parameters.cutline }}' - name: cutline_blend - value: "{{ inputs.parameters.cutline_blend }}" + value: '{{ inputs.parameters.cutline_blend }}' - name: group_size - value: "{{ inputs.parameters.group_size }}" + value: '{{ inputs.parameters.group_size }}' - name: create-pull-request template: create-pull-request arguments: parameters: - name: target - value: "{{ tasks.cogify.outputs.parameters.target }}" - when: "{{workflow.parameters.create_pull_request}} != none" - depends: "cogify" + value: '{{ tasks.cogify.outputs.parameters.target }}' + when: '{{workflow.parameters.create_pull_request}} != none' + depends: 'cogify' # Generate COGs for a specific tile matrix from a given collection of source imagery - name: cogify @@ -130,27 +130,27 @@ spec: arguments: parameters: - name: source - value: "{{ inputs.parameters.source }}" + value: '{{ inputs.parameters.source }}' - name: target - value: "{{ inputs.parameters.target }}" + value: '{{ inputs.parameters.target }}' - name: tile_matrix - value: "{{ inputs.parameters.tile_matrix }}" + value: '{{ inputs.parameters.tile_matrix }}' - name: cutline - value: "{{ inputs.parameters.cutline }}" + value: '{{ inputs.parameters.cutline }}' - name: cutline_blend - value: "{{ inputs.parameters.cutline_blend }}" + value: '{{ inputs.parameters.cutline_blend }}' # Group covering output into chunks to pass to create-cog - name: group arguments: parameters: - name: size - value: "{{ inputs.parameters.group_size }}" + value: '{{ inputs.parameters.group_size }}' - name: version - value: "{{= workflow.parameters.version_argo_tasks }}" + value: '{{= workflow.parameters.version_argo_tasks }}' artifacts: - name: input - from: "{{ tasks.create-covering.outputs.artifacts.tiles }}" + from: '{{ tasks.create-covering.outputs.artifacts.tiles }}' templateRef: name: tpl-at-group template: main @@ -160,14 +160,14 @@ spec: - name: create-cog depends: group template: create-cog - withParam: "{{ tasks.group.outputs.parameters.output }}" + withParam: '{{ tasks.group.outputs.parameters.output }}' arguments: parameters: - name: covering_grouped_id - value: "{{ item }}" + value: '{{ item }}' artifacts: - name: covering_grouped - from: "{{ tasks.group.outputs.artifacts.output }}" + from: '{{ tasks.group.outputs.artifacts.output }}' # once all COGs are created generate a more overviews to increase tile rendering performance - name: create-overview @@ -176,7 +176,7 @@ spec: arguments: parameters: - name: path - value: "{{ tasks.create-covering.outputs.parameters.target }}" + value: '{{ tasks.create-covering.outputs.parameters.target }}' # Create a basemaps config to view the imagery directly - name: create-config @@ -185,21 +185,21 @@ spec: arguments: parameters: - name: path - value: "{{ tasks.create-covering.outputs.parameters.target }}" + value: '{{ tasks.create-covering.outputs.parameters.target }}' - name: title - value: "{{ tasks.create-covering.outputs.parameters.title }}" + value: '{{ tasks.create-covering.outputs.parameters.title }}' outputs: parameters: - name: target description: location of where the output tiffs were created valueFrom: - parameter: "{{ tasks.create-covering.outputs.parameters.target }}" + parameter: '{{ tasks.create-covering.outputs.parameters.target }}' # Generate a tile covering for input imagery - name: create-covering retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: source @@ -214,12 +214,12 @@ spec: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.basemaps.json args: - - "cover" - - "--tile-matrix={{ inputs.parameters.tile_matrix }}" + - 'cover' + - '--tile-matrix={{ inputs.parameters.tile_matrix }}' - "{{= sprig.empty(inputs.parameters.cutline) ? '' : '--cutline=' + inputs.parameters.cutline }}" - - "--cutline-blend={{ inputs.parameters.cutline_blend }}" - - "--target={{= sprig.trim(inputs.parameters.target) }}" - - "{{= sprig.trim(inputs.parameters.source) }}" + - '--cutline-blend={{ inputs.parameters.cutline_blend }}' + - '--target={{= sprig.trim(inputs.parameters.target) }}' + - '{{= sprig.trim(inputs.parameters.source) }}' outputs: parameters: - name: target @@ -239,9 +239,9 @@ spec: # Actually create COGs using gdal_translate on a large spot instances - name: create-cog retryStrategy: - limit: "2" + limit: '2' nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' inputs: artifacts: - name: covering_grouped @@ -260,14 +260,14 @@ spec: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.basemaps.json args: - - "create" - - "--from-file={{= inputs.artifacts.covering_grouped.path }}{{inputs.parameters.covering_grouped_id}}.json" - - "--concurrency=2" + - 'create' + - '--from-file={{= inputs.artifacts.covering_grouped.path }}{{inputs.parameters.covering_grouped_id}}.json' + - '--concurrency=2' # Create a basemaps configuration file to view the imagery - name: create-config retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: path @@ -279,25 +279,25 @@ spec: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.basemaps.json args: - - "config" - - "{{ inputs.parameters.path }}" + - 'config' + - '{{ inputs.parameters.path }}' outputs: parameters: - name: url description: Basemaps URL to view the imagery valueFrom: - path: "/tmp/cogify/config-url" + path: '/tmp/cogify/config-url' - name: config description: Location of the config file valueFrom: - path: "/tmp/cogify/config-path" + path: '/tmp/cogify/config-path' # create additional overviews for any COGs found in the path - name: create-overview retryStrategy: - limit: "2" + limit: '2' nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' inputs: parameters: - name: path @@ -313,10 +313,10 @@ spec: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.basemaps.json args: - - "-V" - - "create-overview" - - "--source={{= sprig.trim(inputs.parameters.path) }}" - - "--output={{= sprig.trim(inputs.parameters.path) }}" + - '-V' + - 'create-overview' + - '--source={{= sprig.trim(inputs.parameters.path) }}' + - '--output={{= sprig.trim(inputs.parameters.path) }}' - name: create-pull-request inputs: @@ -326,7 +326,7 @@ spec: image: 019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{workflow.parameters.version_argo_tasks}} volumeMounts: - name: secret-vol - mountPath: "/root/.ssh/" + mountPath: '/root/.ssh/' command: [node, /app/index.js] env: - name: AWS_ROLE_CONFIG_PATH @@ -338,11 +338,11 @@ spec: key: github-token args: [ - "bmc", - "create-pr", - "--target={{inputs.parameters.target}}", + 'bmc', + 'create-pr', + '--target={{inputs.parameters.target}}', "--individual={{= workflow.parameters.create_pull_request == 'individual'? 'true' : 'false' }}", - "--category={{workflow.parameters.category}}", + '--category={{workflow.parameters.category}}', ] volumes: - name: secret-vol diff --git a/workflows/basemaps/imagery-import.yaml b/workflows/basemaps/imagery-import.yaml index 8e26d606..bf0e8dc2 100644 --- a/workflows/basemaps/imagery-import.yaml +++ b/workflows/basemaps/imagery-import.yaml @@ -6,36 +6,36 @@ metadata: spec: parallelism: 40 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: - name: version-basemaps-cli - value: "v6" + value: 'v6' - name: source - value: "" + value: '' - name: category - value: "Rural Aerial Photos" + value: 'Rural Aerial Photos' enum: - - "Rural Aerial Photos" - - "Urban Aerial Photos" - - "Satellite Imagery" - - "New Aerial Photos" + - 'Rural Aerial Photos' + - 'Urban Aerial Photos' + - 'Satellite Imagery' + - 'New Aerial Photos' - name: name - value: "" + value: '' - name: target - value: "linz-basemaps" + value: 'linz-basemaps' enum: - - "linz-basemaps" - - "linz-basemaps-staging" + - 'linz-basemaps' + - 'linz-basemaps-staging' - name: tile-matrix - value: "NZTM2000Quad/WebMercatorQuad" + value: 'NZTM2000Quad/WebMercatorQuad' enum: - - "NZTM2000Quad" - - "WebMercatorQuad" - - "NZTM2000Quad/WebMercatorQuad" + - 'NZTM2000Quad' + - 'WebMercatorQuad' + - 'NZTM2000Quad/WebMercatorQuad' - name: cutline - value: "s3://linz-basemaps-source/cutline/2020-05-07-cutline-nz-coasts-rural-and-urban.geojson" + value: 's3://linz-basemaps-source/cutline/2020-05-07-cutline-nz-coasts-rural-and-urban.geojson' - name: blend value: 20 - name: aligned-level @@ -68,47 +68,47 @@ spec: arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: name - value: "{{workflow.parameters.name}}" + value: '{{workflow.parameters.name}}' - name: target - value: "{{inputs.parameters.target}}" + value: '{{inputs.parameters.target}}' - name: tile-matrix - value: "{{workflow.parameters.tile-matrix}}" + value: '{{workflow.parameters.tile-matrix}}' - name: cutline - value: "{{inputs.parameters.cutline}}" + value: '{{inputs.parameters.cutline}}' - name: blend - value: "{{workflow.parameters.blend}}" + value: '{{workflow.parameters.blend}}' - name: aligned-level - value: "{{workflow.parameters.aligned-level}}" + value: '{{workflow.parameters.aligned-level}}' - name: cog template: cog arguments: parameters: - name: job - value: "{{item.job}}" + value: '{{item.job}}' - name: names - value: "{{item.names}}" - depends: "make-cog" - withParam: "{{tasks.make-cog.outputs.parameters.jobs}}" + value: '{{item.names}}' + depends: 'make-cog' + withParam: '{{tasks.make-cog.outputs.parameters.jobs}}' - name: create-overview template: create-overview arguments: parameters: - name: path - value: "{{item}}" - depends: "make-cog && cog" - withParam: "{{tasks.make-cog.outputs.parameters.paths}}" + value: '{{item}}' + depends: 'make-cog && cog' + withParam: '{{tasks.make-cog.outputs.parameters.paths}}' - name: create-pr template: create-pr arguments: parameters: - name: layer - value: "{{tasks.make-cog.outputs.parameters.layer}}" + value: '{{tasks.make-cog.outputs.parameters.layer}}' - name: category - value: "{{workflow.parameters.category}}" - when: "{{workflow.parameters.create-pull-request}} == true" - depends: "make-cog && create-overview" + value: '{{workflow.parameters.category}}' + when: '{{workflow.parameters.create-pull-request}} == true' + depends: 'make-cog && create-overview' - name: make-cog inputs: @@ -130,39 +130,39 @@ spec: value: https://basemaps.linz.govt.nz args: [ - "-V", - "make-cog", - "--imagery", - "{{=sprig.trim(inputs.parameters.source)}}", - "--name", - "{{=sprig.trim(inputs.parameters.name)}}", - "--target", - "{{inputs.parameters.target}}", - "--tile-matrix", - "{{inputs.parameters.tile-matrix}}", - "--cutline", - "{{=sprig.trim(inputs.parameters.cutline)}}", - "--blend", - "{{inputs.parameters.blend}}", - "--aligned-level", - "{{inputs.parameters.aligned-level}}", - "--max-chunk-unit", - "6000", - "--aws", - "--output", - "/tmp/cog/", + '-V', + 'make-cog', + '--imagery', + '{{=sprig.trim(inputs.parameters.source)}}', + '--name', + '{{=sprig.trim(inputs.parameters.name)}}', + '--target', + '{{inputs.parameters.target}}', + '--tile-matrix', + '{{inputs.parameters.tile-matrix}}', + '--cutline', + '{{=sprig.trim(inputs.parameters.cutline)}}', + '--blend', + '{{inputs.parameters.blend}}', + '--aligned-level', + '{{inputs.parameters.aligned-level}}', + '--max-chunk-unit', + '6000', + '--aws', + '--output', + '/tmp/cog/', ] outputs: parameters: - name: jobs valueFrom: - path: "/tmp/cog/jobs.json" + path: '/tmp/cog/jobs.json' - name: layer valueFrom: - path: "/tmp/cog/layer.json" + path: '/tmp/cog/layer.json' - name: paths valueFrom: - path: "/tmp/cog/paths.json" + path: '/tmp/cog/paths.json' - name: cog inputs: @@ -182,18 +182,18 @@ spec: - name: BASEMAPS_PUBLIC_URL value: https://basemaps.linz.govt.nz - name: AWS_ROLE_DURATION_HOURS - value: "1" + value: '1' args: [ - "-V", - "cog", - "--job", - "{{inputs.parameters.job}}", - "--name", - "{{inputs.parameters.names}}", - "--concurrency", - "4", - "--commit", + '-V', + 'cog', + '--job', + '{{inputs.parameters.job}}', + '--name', + '{{inputs.parameters.names}}', + '--concurrency', + '4', + '--commit', ] - name: create-overview @@ -210,14 +210,7 @@ spec: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.basemaps.json args: - [ - "-V", - "create-overview", - "--source", - "{{inputs.parameters.path}}", - "--output", - "{{inputs.parameters.path}}", - ] + ['-V', 'create-overview', '--source', '{{inputs.parameters.path}}', '--output', '{{inputs.parameters.path}}'] - name: create-pr inputs: @@ -235,17 +228,17 @@ spec: key: github-token args: [ - "-V", - "cog-pr", - "--layer", - "{{inputs.parameters.layer}}", - "--category", - "{{inputs.parameters.category}}", - "--output", - "/tmp/pr", + '-V', + 'cog-pr', + '--layer', + '{{inputs.parameters.layer}}', + '--category', + '{{inputs.parameters.category}}', + '--output', + '/tmp/pr', ] outputs: parameters: - name: pr valueFrom: - path: "/tmp/pr" + path: '/tmp/pr' diff --git a/workflows/basemaps/mapsheet-json.yaml b/workflows/basemaps/mapsheet-json.yaml index 66f8b900..d9664e13 100644 --- a/workflows/basemaps/mapsheet-json.yaml +++ b/workflows/basemaps/mapsheet-json.yaml @@ -8,17 +8,17 @@ spec: arguments: parameters: - name: version-argo-tasks - value: "v2" + value: 'v2' - name: version-basemaps-cli - value: "v6" + value: 'v6' - name: layer - value: "104687" + value: '104687' - name: config - value: "s3://linz-basemaps/config/config-latest.json.gz" + value: 's3://linz-basemaps/config/config-latest.json.gz' - name: include - value: "" + value: '' - name: exclude - value: "nz_satellite" + value: 'nz_satellite' templateDefaults: container: imagePullPolicy: Always @@ -31,21 +31,21 @@ spec: arguments: parameters: - name: layer - value: "{{workflow.parameters.layer}}" + value: '{{workflow.parameters.layer}}' - name: transform template: transform arguments: artifacts: - name: geopackage - from: "{{tasks.fetch-layer.outputs.artifacts.geopackage}}" - depends: "fetch-layer" + from: '{{tasks.fetch-layer.outputs.artifacts.geopackage}}' + depends: 'fetch-layer' - name: create-mapsheet template: create-mapsheet arguments: artifacts: - name: flatGeobuf - from: "{{tasks.transform.outputs.artifacts.flatGeobuf}}" - depends: "transform" + from: '{{tasks.transform.outputs.artifacts.flatGeobuf}}' + depends: 'transform' - name: fetch-layer inputs: @@ -57,13 +57,7 @@ spec: env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json - args: - [ - "lds-fetch-layer", - "{{=sprig.trim(inputs.parameters.layer)}}", - "--target", - "/tmp/lds-layer", - ] + args: ['lds-fetch-layer', '{{=sprig.trim(inputs.parameters.layer)}}', '--target', '/tmp/lds-layer'] outputs: artifacts: - name: geopackage @@ -78,7 +72,7 @@ spec: image: ghcr.io/osgeo/gdal:alpine-small-3.7.0 imagePullPolicy: IfNotPresent command: [sh] - args: ["-c", "ogr2ogr -f FlatGeobuf tmp/flatGeobuf.fgb tmp/*.gpkg"] + args: ['-c', 'ogr2ogr -f FlatGeobuf tmp/flatGeobuf.fgb tmp/*.gpkg'] outputs: artifacts: - name: flatGeobuf @@ -97,18 +91,18 @@ spec: value: s3://linz-bucket-config/config.json args: [ - "-V", - "create-mapsheet", - "--path", - "/tmp/flatGeobuf.fgb", - "--config", - "{{=sprig.trim(workflow.parameters.config)}}", - "--output", - "/tmp/mapsheet.json", - "--include", - "{{=sprig.trim(workflow.parameters.include)}}", - "--exclude", - "{{=sprig.trim(workflow.parameters.exclude)}}", + '-V', + 'create-mapsheet', + '--path', + '/tmp/flatGeobuf.fgb', + '--config', + '{{=sprig.trim(workflow.parameters.config)}}', + '--output', + '/tmp/mapsheet.json', + '--include', + '{{=sprig.trim(workflow.parameters.include)}}', + '--exclude', + '{{=sprig.trim(workflow.parameters.exclude)}}', ] outputs: artifacts: diff --git a/workflows/basemaps/vector-etl.yaml b/workflows/basemaps/vector-etl.yaml index 14f4bb04..1f7b6ada 100644 --- a/workflows/basemaps/vector-etl.yaml +++ b/workflows/basemaps/vector-etl.yaml @@ -12,10 +12,10 @@ spec: description: Version of the basemaps CLI docker container to use value: v2 - name: target - value: "linz-basemaps" + value: 'linz-basemaps' enum: - - "linz-basemaps" - - "linz-basemaps-staging" + - 'linz-basemaps' + - 'linz-basemaps-staging' - name: create-pull-request value: true enum: @@ -35,9 +35,9 @@ spec: arguments: parameters: - name: target - value: "{{tasks.vector-etl.outputs.parameters.target}}" - when: "{{workflow.parameters.create-pull-request}} == true" - depends: "vector-etl" + value: '{{tasks.vector-etl.outputs.parameters.target}}' + when: '{{workflow.parameters.create-pull-request}} == true' + depends: 'vector-etl' - name: vector-etl container: @@ -50,20 +50,12 @@ spec: env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.basemaps.json - args: - [ - "--all", - "--target", - "{{workflow.parameters.target}}", - "--output", - "/tmp/", - "--commit", - ] + args: ['--all', '--target', '{{workflow.parameters.target}}', '--output', '/tmp/', '--commit'] outputs: parameters: - name: target valueFrom: - path: "/tmp/target" + path: '/tmp/target' - name: create-pull-request inputs: @@ -73,7 +65,7 @@ spec: image: 019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{workflow.parameters.version_argo_tasks}} volumeMounts: - name: secret-vol - mountPath: "/root/.ssh/" + mountPath: '/root/.ssh/' command: [node, /app/index.js] env: - name: AWS_ROLE_CONFIG_PATH @@ -83,13 +75,7 @@ spec: secretKeyRef: name: github-bot-pat key: github-token - args: - [ - "bmc", - "create-pr", - "--target={{inputs.parameters.target}}", - "--vector", - ] + args: ['bmc', 'create-pr', '--target={{inputs.parameters.target}}', '--vector'] volumes: - name: secret-vol secret: diff --git a/workflows/imagery/README.md b/workflows/imagery/README.md index 87aeafb7..ac14e4ff 100644 --- a/workflows/imagery/README.md +++ b/workflows/imagery/README.md @@ -326,17 +326,17 @@ argo submit topo-workflows/imagery/standardising-publish-import.yaml -n argo -f _params.yaml_: ```yaml -source: "s3://linz-imagery-source-example/aerial-imagery/new-zealand/christchurch_urban_2021_0.05m_RGB/" -target: "s3://linz-imagery-example/canterbury/christchurch_2021_0.05m/rgb/2193/" -scale: "500" -group: "29" -cutline: "s3://linz-imagery-cutline-example/historical-imagery-cutlines/2023-01-16_84fd68f/SNC50451-combined.fgb" -title: "Christchurch 0.05m Urban Aerial Photos (2021)" -description: "Orthophotography within the Canterbury region captured in the 2021 flying season." -producer: "Aerial Surveys" -licensor: "Toitū Te Whenua Land Information New Zealand" -start-datetime: "2021-11-02" -end-datetime: "2021-12-02" +source: 's3://linz-imagery-source-example/aerial-imagery/new-zealand/christchurch_urban_2021_0.05m_RGB/' +target: 's3://linz-imagery-example/canterbury/christchurch_2021_0.05m/rgb/2193/' +scale: '500' +group: '29' +cutline: 's3://linz-imagery-cutline-example/historical-imagery-cutlines/2023-01-16_84fd68f/SNC50451-combined.fgb' +title: 'Christchurch 0.05m Urban Aerial Photos (2021)' +description: 'Orthophotography within the Canterbury region captured in the 2021 flying season.' +producer: 'Aerial Surveys' +licensor: 'Toitū Te Whenua Land Information New Zealand' +start-datetime: '2021-11-02' +end-datetime: '2021-12-02' ``` ### Submitting from the command line using the `-p` (`--parameter`) option (standardising-publish-import): @@ -354,24 +354,24 @@ argo submit topo-workflows/imagery/standardising-publish-import.yaml -n argo -f _params.yaml_: ```yaml -source: "s3://linz-imagery-source-example/aerial-imagery/new-zealand/christchurch_urban_2021_0.05m_RGB/" -target: "s3://linz-imagery-example/canterbury/christchurch_2021_0.05m/rgb/2193/" -scale: "500" -group: "29" -cutline: "s3://linz-imagery-cutline-example/historical-imagery-cutlines/2023-01-16_84fd68f/SNC50451-combined.fgb" -title: "Christchurch 0.05m Urban Aerial Photos (2021)" -description: "Orthophotography within the Canterbury region captured in the 2021 flying season." -producer: "Aerial Surveys" -licensor: "" -licensor-list: "Waka Kotahi; Nelson City Council;Tasman District Council" -start-datetime: "2021-11-02" -end-datetime: "2021-12-02" -category: "Urban Aerial Photos" -name: "christchurch_2021_0.05m" -tile-matrix: "NZTM2000Quad/WebMercatorQuad" -blend: "20" -aligned-level: "6" -create-pull-request: "true" +source: 's3://linz-imagery-source-example/aerial-imagery/new-zealand/christchurch_urban_2021_0.05m_RGB/' +target: 's3://linz-imagery-example/canterbury/christchurch_2021_0.05m/rgb/2193/' +scale: '500' +group: '29' +cutline: 's3://linz-imagery-cutline-example/historical-imagery-cutlines/2023-01-16_84fd68f/SNC50451-combined.fgb' +title: 'Christchurch 0.05m Urban Aerial Photos (2021)' +description: 'Orthophotography within the Canterbury region captured in the 2021 flying season.' +producer: 'Aerial Surveys' +licensor: '' +licensor-list: 'Waka Kotahi; Nelson City Council;Tasman District Council' +start-datetime: '2021-11-02' +end-datetime: '2021-12-02' +category: 'Urban Aerial Photos' +name: 'christchurch_2021_0.05m' +tile-matrix: 'NZTM2000Quad/WebMercatorQuad' +blend: '20' +aligned-level: '6' +create-pull-request: 'true' ``` ## How To Use the Test Workflow diff --git a/workflows/imagery/ascii-standardise-publish.yaml b/workflows/imagery/ascii-standardise-publish.yaml index a130830a..ed629475 100644 --- a/workflows/imagery/ascii-standardise-publish.yaml +++ b/workflows/imagery/ascii-standardise-publish.yaml @@ -7,7 +7,7 @@ metadata: spec: parallelism: 50 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main synchronization: semaphore: @@ -17,35 +17,35 @@ spec: arguments: parameters: - name: source - value: "s3://path/" + value: 's3://path/' - name: cutline # optional standardising cutline - value: "" + value: '' - name: collection-id # optional - value: "" + value: '' - name: compression - value: "webp" + value: 'webp' - name: source-epsg - value: "2193" + value: '2193' - name: target-epsg - value: "2193" + value: '2193' - name: group - value: "50" + value: '50' - name: copy-option - value: "--no-clobber" + value: '--no-clobber' - name: include - value: ".tiff?$" + value: '.tiff?$' - name: transform - value: "f" + value: 'f' - name: validate - value: "true" + value: 'true' - name: retile - value: "false" + value: 'false' - name: version-argo-tasks - value: "v2" + value: 'v2' - name: version-basemaps-cli - value: "v6" + value: 'v6' - name: version-topo-imagery - value: "v3" + value: 'v3' templateDefaults: container: imagePullPolicy: Always @@ -64,11 +64,11 @@ spec: arguments: parameters: - name: target - value: "{{tasks.get-location.outputs.parameters.location}}translated-asc-files/" + value: '{{tasks.get-location.outputs.parameters.location}}translated-asc-files/' artifacts: - name: files - from: "{{ tasks.aws-list.outputs.artifacts.files }}" - depends: "get-location && aws-list" + from: '{{ tasks.aws-list.outputs.artifacts.files }}' + depends: 'get-location && aws-list' - name: standardise templateRef: @@ -77,8 +77,8 @@ spec: arguments: parameters: - name: source - value: "{{tasks.get-location.outputs.parameters.location}}translated-asc-files/" - depends: "convert-asc-files" + value: '{{tasks.get-location.outputs.parameters.location}}translated-asc-files/' + depends: 'convert-asc-files' - name: publish templateRef: @@ -87,14 +87,14 @@ spec: arguments: parameters: - name: source - value: "{{tasks.get-location.outputs.parameters.location}}flat/" + value: '{{tasks.get-location.outputs.parameters.location}}flat/' - name: include - value: ".tiff?$|.json$" + value: '.tiff?$|.json$' - name: group - value: "1000" + value: '1000' - name: group-size - value: "100Gi" - depends: "standardise" + value: '100Gi' + depends: 'standardise' # END TEMPLATE `main` - name: get-location @@ -110,27 +110,27 @@ spec: parameters: - name: location valueFrom: - path: "/tmp/location" + path: '/tmp/location' - name: aws-list inputs: container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{workflow.parameters.version-argo-tasks}}" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{workflow.parameters.version-argo-tasks}}' command: [node, /app/index.js] env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json args: [ - "list", - "--verbose", - "--include", - ".asc?$", - "--group", - "999999", - "--output", - "/tmp/file_list.json", - "{{workflow.parameters.source}}", + 'list', + '--verbose', + '--include', + '.asc?$', + '--group', + '999999', + '--output', + '/tmp/file_list.json', + '{{workflow.parameters.source}}', ] outputs: artifacts: @@ -139,9 +139,9 @@ spec: - name: convert-asc-files retryStrategy: - limit: "2" + limit: '2' nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' inputs: parameters: - name: target @@ -157,15 +157,15 @@ spec: ephemeral-storage: 3Gi volumeMounts: - name: ephemeral - mountPath: "/tmp" + mountPath: '/tmp' command: - python - - "/app/scripts/translate_ascii.py" + - '/app/scripts/translate_ascii.py' args: - - "--from-file" - - "/tmp/file_list.json" - - "--target" - - "{{inputs.parameters.target}}" + - '--from-file' + - '/tmp/file_list.json' + - '--target' + - '{{inputs.parameters.target}}' volumes: - name: ephemeral diff --git a/workflows/imagery/publish-copy.yaml b/workflows/imagery/publish-copy.yaml index 16d4ab1e..5e287bff 100644 --- a/workflows/imagery/publish-copy.yaml +++ b/workflows/imagery/publish-copy.yaml @@ -7,7 +7,7 @@ metadata: spec: parallelism: 50 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main synchronization: semaphore: @@ -17,25 +17,25 @@ spec: arguments: parameters: - name: version-argo-tasks - value: "v2" + value: 'v2' - name: source - value: "s3://linz-imagery-staging/test/sample/" + value: 's3://linz-imagery-staging/test/sample/' - name: target - value: "s3://linz-imagery-staging/test/sample_target/" + value: 's3://linz-imagery-staging/test/sample_target/' - name: include - value: ".tiff?$|.json$|.tfw$" + value: '.tiff?$|.json$|.tfw$' - name: copy-option - value: "--no-clobber" + value: '--no-clobber' enum: - - "--no-clobber" - - "--force" - - "--force-no-clobber" + - '--no-clobber' + - '--force' + - '--force-no-clobber' - name: group - value: "1000" + value: '1000' - name: group-size - value: "100Gi" + value: '100Gi' - name: transform - value: "f" + value: 'f' templateDefaults: container: imagePullPolicy: Always @@ -56,19 +56,19 @@ spec: arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: target - value: "{{workflow.parameters.target}}" + value: '{{workflow.parameters.target}}' - name: include - value: "{{inputs.parameters.include}}" + value: '{{inputs.parameters.include}}' - name: exclude - value: "collection.json$" + value: 'collection.json$' - name: group - value: "{{inputs.parameters.group}}" + value: '{{inputs.parameters.group}}' - name: group-size - value: "{{inputs.parameters.group-size}}" + value: '{{inputs.parameters.group-size}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' when: "{{=sprig.regexMatch('s3://linz-elevation/', workflow.parameters.target)}}" - name: create-manifest @@ -78,20 +78,20 @@ spec: arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: target - value: "{{workflow.parameters.target}}" + value: '{{workflow.parameters.target}}' - name: include - value: "{{inputs.parameters.include}}" + value: '{{inputs.parameters.include}}' - name: exclude - value: "" + value: '' - name: group - value: "{{inputs.parameters.group}}" + value: '{{inputs.parameters.group}}' - name: group-size - value: "{{inputs.parameters.group-size}}" + value: '{{inputs.parameters.group-size}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" - depends: "create-manifest-github.Skipped" + value: '{{workflow.parameters.version-argo-tasks}}' + depends: 'create-manifest-github.Skipped' - name: copy-with-github templateRef: @@ -100,13 +100,13 @@ spec: arguments: parameters: - name: copy-option - value: "{{workflow.parameters.copy-option}}" + value: '{{workflow.parameters.copy-option}}' - name: file - value: "{{item}}" + value: '{{item}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" - depends: "create-manifest-github.Succeeded" - withParam: "{{tasks.create-manifest-github.outputs.parameters.files}}" + value: '{{workflow.parameters.version-argo-tasks}}' + depends: 'create-manifest-github.Succeeded' + withParam: '{{tasks.create-manifest-github.outputs.parameters.files}}' - name: copy templateRef: @@ -115,15 +115,15 @@ spec: arguments: parameters: - name: copy-option - value: "{{workflow.parameters.copy-option}}" + value: '{{workflow.parameters.copy-option}}' - name: file - value: "{{item}}" + value: '{{item}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' - name: aws-role-config-path - value: "s3://linz-bucket-config/config-write.imagery.json" - depends: "create-manifest" - withParam: "{{tasks.create-manifest.outputs.parameters.files}}" + value: 's3://linz-bucket-config/config-write.imagery.json' + depends: 'create-manifest' + withParam: '{{tasks.create-manifest.outputs.parameters.files}}' - name: push-to-github templateRef: @@ -132,11 +132,11 @@ spec: arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: target - value: "{{workflow.parameters.target}}" + value: '{{workflow.parameters.target}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' - name: repository - value: "elevation" - depends: "copy-with-github" + value: 'elevation' + depends: 'copy-with-github' diff --git a/workflows/imagery/publish-odr.yaml b/workflows/imagery/publish-odr.yaml index 490ade3a..b957d00d 100644 --- a/workflows/imagery/publish-odr.yaml +++ b/workflows/imagery/publish-odr.yaml @@ -7,7 +7,7 @@ metadata: spec: parallelism: 50 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main synchronization: semaphore: @@ -17,25 +17,25 @@ spec: arguments: parameters: - name: version-argo-tasks - value: "v2" + value: 'v2' - name: source - value: "s3://linz-imagery-staging/test/sample/" + value: 's3://linz-imagery-staging/test/sample/' - name: target - value: "s3://linz-imagery-staging/test/sample_target/" + value: 's3://linz-imagery-staging/test/sample_target/' - name: include - value: ".tiff?$|.json$|.tfw$" + value: '.tiff?$|.json$|.tfw$' - name: copy-option - value: "--no-clobber" + value: '--no-clobber' enum: - - "--no-clobber" - - "--force" - - "--force-no-clobber" + - '--no-clobber' + - '--force' + - '--force-no-clobber' - name: group - value: "1000" + value: '1000' - name: group-size - value: "100Gi" + value: '100Gi' - name: transform - value: "f" + value: 'f' templateDefaults: container: imagePullPolicy: Always @@ -56,19 +56,19 @@ spec: arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: target - value: "{{workflow.parameters.target}}" + value: '{{workflow.parameters.target}}' - name: include - value: "{{inputs.parameters.include}}" + value: '{{inputs.parameters.include}}' - name: exclude - value: "collection.json$" + value: 'collection.json$' - name: group - value: "{{inputs.parameters.group}}" + value: '{{inputs.parameters.group}}' - name: group-size - value: "{{inputs.parameters.group-size}}" + value: '{{inputs.parameters.group-size}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' when: "{{=sprig.regexMatch('s3://nz-imagery/', workflow.parameters.target)}}" - name: create-manifest @@ -78,20 +78,20 @@ spec: arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: target - value: "{{workflow.parameters.target}}" + value: '{{workflow.parameters.target}}' - name: include - value: "{{inputs.parameters.include}}" + value: '{{inputs.parameters.include}}' - name: exclude - value: "" + value: '' - name: group - value: "{{inputs.parameters.group}}" + value: '{{inputs.parameters.group}}' - name: group-size - value: "{{inputs.parameters.group-size}}" + value: '{{inputs.parameters.group-size}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" - depends: "create-manifest-github.Skipped" + value: '{{workflow.parameters.version-argo-tasks}}' + depends: 'create-manifest-github.Skipped' - name: copy-with-github templateRef: @@ -100,15 +100,15 @@ spec: arguments: parameters: - name: copy-option - value: "{{workflow.parameters.copy-option}}" + value: '{{workflow.parameters.copy-option}}' - name: file - value: "{{item}}" + value: '{{item}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' - name: aws-role-config-path - value: "s3://linz-bucket-config/config-write.open-data-registry.json,s3://linz-bucket-config/config.json" - depends: "create-manifest-github.Succeeded" - withParam: "{{tasks.create-manifest-github.outputs.parameters.files}}" + value: 's3://linz-bucket-config/config-write.open-data-registry.json,s3://linz-bucket-config/config.json' + depends: 'create-manifest-github.Succeeded' + withParam: '{{tasks.create-manifest-github.outputs.parameters.files}}' - name: copy templateRef: @@ -117,15 +117,15 @@ spec: arguments: parameters: - name: copy-option - value: "{{workflow.parameters.copy-option}}" + value: '{{workflow.parameters.copy-option}}' - name: file - value: "{{item}}" + value: '{{item}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' - name: aws-role-config-path - value: "s3://linz-bucket-config/config-write.open-data-registry.json" - depends: "create-manifest" - withParam: "{{tasks.create-manifest.outputs.parameters.files}}" + value: 's3://linz-bucket-config/config-write.open-data-registry.json' + depends: 'create-manifest' + withParam: '{{tasks.create-manifest.outputs.parameters.files}}' - name: push-to-github templateRef: @@ -134,16 +134,16 @@ spec: arguments: parameters: - name: source - value: "{{inputs.parameters.source}}" + value: '{{inputs.parameters.source}}' - name: target - value: "{{workflow.parameters.target}}" + value: '{{workflow.parameters.target}}' - name: version-argo-tasks - value: "{{workflow.parameters.version-argo-tasks}}" + value: '{{workflow.parameters.version-argo-tasks}}' - name: repository - value: "imagery" - depends: "copy-with-github" + value: 'imagery' + depends: 'copy-with-github' volumes: - name: secret-volume secret: - secretName: "github-linz-{{=sprig.regexFind(inputs.parameters.repository, inputs.parameters.target)}}" + secretName: 'github-linz-{{=sprig.regexFind(inputs.parameters.repository, inputs.parameters.target)}}' defaultMode: 384 diff --git a/workflows/imagery/standardising-publish-import.yaml b/workflows/imagery/standardising-publish-import.yaml index ab6fd92f..59ae3d71 100644 --- a/workflows/imagery/standardising-publish-import.yaml +++ b/workflows/imagery/standardising-publish-import.yaml @@ -7,7 +7,7 @@ metadata: spec: parallelism: 50 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main synchronization: semaphore: @@ -17,35 +17,35 @@ spec: arguments: parameters: - name: source - value: "" + value: '' - name: cutline # optional standardising cutline - value: "" + value: '' - name: collection-id # optional - value: "" + value: '' - name: compression - value: "webp" + value: 'webp' - name: source-epsg - value: "2193" + value: '2193' - name: target-epsg - value: "2193" + value: '2193' - name: group - value: "50" + value: '50' - name: copy-option - value: "--no-clobber" + value: '--no-clobber' - name: include - value: ".tiff?$" + value: '.tiff?$' - name: transform - value: "f" + value: 'f' - name: validate - value: "true" + value: 'true' - name: retile - value: "false" + value: 'false' - name: version-argo-tasks - value: "v2" + value: 'v2' - name: version-basemaps-cli - value: "v6" + value: 'v6' - name: version-topo-imagery - value: "v3" + value: 'v3' templateDefaults: container: imagePullPolicy: Always @@ -59,7 +59,7 @@ spec: arguments: parameters: - name: source - value: "{{workflow.parameters.source}}" + value: '{{workflow.parameters.source}}' - - name: publish templateRef: name: publish-copy @@ -67,13 +67,13 @@ spec: arguments: parameters: - name: source - value: "{{steps.standardise.outputs.parameters.target}}flat/" + value: '{{steps.standardise.outputs.parameters.target}}flat/' - name: include - value: ".tiff?$|.json$" + value: '.tiff?$|.json$' - name: group - value: "1000" + value: '1000' - name: group-size - value: "100Gi" + value: '100Gi' # - - name: import # uncomment this stanza for basemaps imagery import and amend as necessary. All other inputs should be workflow parameters # templateRef: # name: basemaps-imagery-import diff --git a/workflows/imagery/standardising.yaml b/workflows/imagery/standardising.yaml index 4180a375..d80a089b 100644 --- a/workflows/imagery/standardising.yaml +++ b/workflows/imagery/standardising.yaml @@ -7,7 +7,7 @@ metadata: spec: parallelism: 50 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main synchronization: semaphore: @@ -18,195 +18,195 @@ spec: parameters: # FIXME: Should use camelCase or underscore? - name: version-argo-tasks - value: "v2" + value: 'v2' - name: version-basemaps-cli - value: "v6" + value: 'v6' - name: version-topo-imagery - value: "v3" + value: 'v3' - name: source - value: "s3://linz-imagery-staging/test/sample/" + value: 's3://linz-imagery-staging/test/sample/' - name: include - value: ".tiff?$" + value: '.tiff?$' - name: scale - value: "500" + value: '500' enum: - - "500" - - "1000" - - "2000" - - "5000" - - "10000" - - "50000" - - "None" + - '500' + - '1000' + - '2000' + - '5000' + - '10000' + - '50000' + - 'None' - name: validate value: true enum: - - "false" - - "true" + - 'false' + - 'true' - name: retile value: false enum: - - "true" - - "false" + - 'true' + - 'false' - name: source-epsg - value: "2193" + value: '2193' - name: target-epsg - value: "2193" + value: '2193' - name: group - value: "50" + value: '50' - name: compression - value: "webp" + value: 'webp' enum: - - "webp" - - "lzw" - - "dem_lerc" + - 'webp' + - 'lzw' + - 'dem_lerc' - name: cutline - description: "(Optional) location of a cutline file to cut the imagery to .fgb or .geojson" - value: "" + description: '(Optional) location of a cutline file to cut the imagery to .fgb or .geojson' + value: '' - name: collection-id - description: "(Optional) If an existing dataset add collection ID here, else a new one will be generated." - value: "" + description: '(Optional) If an existing dataset add collection ID here, else a new one will be generated.' + value: '' - name: title - value: "*Region/District/City* *GSD* *Urban/Rural* Aerial Photos (*Year-Year*)" + value: '*Region/District/City* *GSD* *Urban/Rural* Aerial Photos (*Year-Year*)' - name: description - value: "Orthophotography within the *Region Name* region captured in the *Year*-*Year* flying season." + value: 'Orthophotography within the *Region Name* region captured in the *Year*-*Year* flying season.' - name: producer - value: "Unknown" + value: 'Unknown' enum: [ - "Unknown", - "AAM NZ", - "Aerial Surveys", - "Beca", - "Chang Guang Satellite Technology", - "Dimap", - "European Space Agency", - "GeoSmart", - "Landpro", - "Maxar", - "NZ Aerial Mapping", - "Ocean Infinity", - "Recon", - "RPS", - "SkyCan", - "Terralink International", - "UAV Mapping NZ", + 'Unknown', + 'AAM NZ', + 'Aerial Surveys', + 'Beca', + 'Chang Guang Satellite Technology', + 'Dimap', + 'European Space Agency', + 'GeoSmart', + 'Landpro', + 'Maxar', + 'NZ Aerial Mapping', + 'Ocean Infinity', + 'Recon', + 'RPS', + 'SkyCan', + 'Terralink International', + 'UAV Mapping NZ', ] - name: producer-list - description: "(Optional) List of imagery producers, separated by a semicolons (;). Has no effect unless a semicolon delimited list is entered." - value: "" + description: '(Optional) List of imagery producers, separated by a semicolons (;). Has no effect unless a semicolon delimited list is entered.' + value: '' - name: licensor - value: "Unknown" + value: 'Unknown' enum: [ - "Unknown", - "Ashburton District Council", - "Auckland Council", - "BOPLASS", - "Bay of Plenty Regional Council", - "Buller District Council", - "Canterbury Aerial Imagery Consortium (CAI)", - "Carterton District Council", + 'Unknown', + 'Ashburton District Council', + 'Auckland Council', + 'BOPLASS', + 'Bay of Plenty Regional Council', + 'Buller District Council', + 'Canterbury Aerial Imagery Consortium (CAI)', + 'Carterton District Council', "Central Hawke's Bay District Council", - "Central Otago District Council", - "Chang Guang Satellite Technology", - "Chatham Islands Council", - "Christchurch City Council", - "Clutha District Council", - "CoLAB", - "Department of Conservation", - "Dunedin City Council", - "Environment Canterbury", - "Environment Southland", - "Far North District Council", - "Gisborne District Council", - "Gore District Council", - "Greater Wellington Regional Council", - "Grey District Council", - "Hamilton City Council", - "Hastings District Council", - "Hauraki District Council", + 'Central Otago District Council', + 'Chang Guang Satellite Technology', + 'Chatham Islands Council', + 'Christchurch City Council', + 'Clutha District Council', + 'CoLAB', + 'Department of Conservation', + 'Dunedin City Council', + 'Environment Canterbury', + 'Environment Southland', + 'Far North District Council', + 'Gisborne District Council', + 'Gore District Council', + 'Greater Wellington Regional Council', + 'Grey District Council', + 'Hamilton City Council', + 'Hastings District Council', + 'Hauraki District Council', "Hawke's Bay Local Authority Shared Services (HB LASS)", "Hawke's Bay Regional Council", - "Horizons Regional Council", - "Horowhenua District Council", - "Hurunui District Council", - "Hutt City Council", - "Invercargill City Council", - "Kaikōura District Council", - "Kaipara District Council", - "Kawerau District Council", - "Kāpiti Coast District Council", - "Mackenzie District Council", - "Manawatū District Council", - "Manawatū-Whanganui LASS", - "Marlborough District Council", - "Masterton District Council", - "Matamata-Piako District Council", - "Maxar Technologies", - "Ministry of Primary Industries", - "NZ Aerial Mapping", - "Napier City Council", - "National Emergency Management Agency", - "Nelson City Council", - "New Plymouth District Council", - "Northland Regional Council", - "Ōpōtiki District Council", - "Ōtorohanga District Council", - "Otago Regional Council", - "Palmerston North City Council", - "Porirua City Council", - "Queenstown-Lakes District Council", - "Rangitīkei District Council", - "Rotorua District Council", - "Ruapehu District Council", - "Selwyn District Council", - "Sinergise", - "South Taranaki District Council", - "South Waikato District Council", - "South Wairarapa District Council", - "Southland District Council", - "Stratford District Council", - "Taranaki Regional Council", - "Tararua District Council", - "Tasman District Council", - "Taupō District Council", - "Tauranga City Council", - "Terralink International", - "Thames-Coromandel District Council", - "Timaru District Council", - "Toitū Te Whenua Land Information New Zealand", - "Upper Hutt City Council", - "Waikato District Council", - "Waikato Regional Aerial Photography Service (WRAPS)", - "Waikato Regional Council", - "Waimakariri District Council", - "Waimate District Council", - "Waipā District Council", - "Wairoa District Council", - "Waitaki District Council", - "Waitomo District Council", - "Waka Kotahi", - "Wellington City Council", - "West Coast Regional Council", - "Western Bay of Plenty District Council", - "Westland District Council", - "Whakatāne District Council", - "Whanganui District Council", - "Whangārei District Council", + 'Horizons Regional Council', + 'Horowhenua District Council', + 'Hurunui District Council', + 'Hutt City Council', + 'Invercargill City Council', + 'Kaikōura District Council', + 'Kaipara District Council', + 'Kawerau District Council', + 'Kāpiti Coast District Council', + 'Mackenzie District Council', + 'Manawatū District Council', + 'Manawatū-Whanganui LASS', + 'Marlborough District Council', + 'Masterton District Council', + 'Matamata-Piako District Council', + 'Maxar Technologies', + 'Ministry of Primary Industries', + 'NZ Aerial Mapping', + 'Napier City Council', + 'National Emergency Management Agency', + 'Nelson City Council', + 'New Plymouth District Council', + 'Northland Regional Council', + 'Ōpōtiki District Council', + 'Ōtorohanga District Council', + 'Otago Regional Council', + 'Palmerston North City Council', + 'Porirua City Council', + 'Queenstown-Lakes District Council', + 'Rangitīkei District Council', + 'Rotorua District Council', + 'Ruapehu District Council', + 'Selwyn District Council', + 'Sinergise', + 'South Taranaki District Council', + 'South Waikato District Council', + 'South Wairarapa District Council', + 'Southland District Council', + 'Stratford District Council', + 'Taranaki Regional Council', + 'Tararua District Council', + 'Tasman District Council', + 'Taupō District Council', + 'Tauranga City Council', + 'Terralink International', + 'Thames-Coromandel District Council', + 'Timaru District Council', + 'Toitū Te Whenua Land Information New Zealand', + 'Upper Hutt City Council', + 'Waikato District Council', + 'Waikato Regional Aerial Photography Service (WRAPS)', + 'Waikato Regional Council', + 'Waimakariri District Council', + 'Waimate District Council', + 'Waipā District Council', + 'Wairoa District Council', + 'Waitaki District Council', + 'Waitomo District Council', + 'Waka Kotahi', + 'Wellington City Council', + 'West Coast Regional Council', + 'Western Bay of Plenty District Council', + 'Westland District Council', + 'Whakatāne District Council', + 'Whanganui District Council', + 'Whangārei District Council', ] - name: licensor-list - description: "(Optional) List of imagery licensors, separated by a semicolons (;). Has no effect unless a semicolon delimited list is entered." - value: "" + description: '(Optional) List of imagery licensors, separated by a semicolons (;). Has no effect unless a semicolon delimited list is entered.' + value: '' - name: start-datetime - value: "YYYY-MM-DD" + value: 'YYYY-MM-DD' - name: end-datetime - value: "YYYY-MM-DD" + value: 'YYYY-MM-DD' - name: copy-option - value: "--no-clobber" + value: '--no-clobber' enum: - - "--no-clobber" - - "--force" - - "--force-no-clobber" + - '--no-clobber' + - '--force' + - '--force-no-clobber' templateDefaults: container: imagePullPolicy: Always @@ -227,17 +227,17 @@ spec: arguments: parameters: - name: scale - value: "{{workflow.parameters.scale}}" + value: '{{workflow.parameters.scale}}' - name: include - value: "{{workflow.parameters.include}}" + value: '{{workflow.parameters.include}}' - name: source - value: "{{=sprig.trim(inputs.parameters.source)}}" + value: '{{=sprig.trim(inputs.parameters.source)}}' - name: source_epsg value: "{{=sprig.trim(workflow.parameters['source-epsg'])}}" - name: validate - value: "{{= workflow.parameters.validate}}" + value: '{{= workflow.parameters.validate}}' - name: retile - value: "{{= workflow.parameters.retile}}" + value: '{{= workflow.parameters.retile}}' - name: version value: "{{= workflow.parameters['version-argo-tasks']}}" @@ -248,51 +248,51 @@ spec: arguments: artifacts: - name: input - from: "{{ tasks.tile-index-validate.outputs.artifacts.files }}" + from: '{{ tasks.tile-index-validate.outputs.artifacts.files }}' parameters: - name: size - value: "{{workflow.parameters.group}}" + value: '{{workflow.parameters.group}}' - name: version value: "{{= workflow.parameters['version-argo-tasks']}}" - depends: "tile-index-validate" + depends: 'tile-index-validate' - name: standardise-validate template: standardise-validate arguments: parameters: - name: group_id - value: "{{item}}" + value: '{{item}}' - name: collection-id - value: "{{tasks.collection-id-setup.outputs.parameters.collection-id}}" + value: '{{tasks.collection-id-setup.outputs.parameters.collection-id}}' - name: target - value: "{{tasks.get-location.outputs.parameters.location}}flat/" + value: '{{tasks.get-location.outputs.parameters.location}}flat/' artifacts: - name: group_data - from: "{{ tasks.group.outputs.artifacts.output }}" - depends: "group && collection-id-setup && get-location" - withParam: "{{ tasks.group.outputs.parameters.output }}" + from: '{{ tasks.group.outputs.artifacts.output }}' + depends: 'group && collection-id-setup && get-location' + withParam: '{{ tasks.group.outputs.parameters.output }}' - name: create-collection template: create-collection arguments: parameters: - name: collection-id - value: "{{tasks.collection-id-setup.outputs.parameters.collection-id}}" + value: '{{tasks.collection-id-setup.outputs.parameters.collection-id}}' - name: location - value: "{{tasks.get-location.outputs.parameters.location}}" - depends: "standardise-validate" + value: '{{tasks.get-location.outputs.parameters.location}}' + depends: 'standardise-validate' - name: stac-validate template: stac-validate arguments: parameters: - name: location - value: "{{tasks.get-location.outputs.parameters.location}}" + value: '{{tasks.get-location.outputs.parameters.location}}' artifacts: - name: stac-result raw: - data: "{{tasks.stac-validate.outputs.result}}" - depends: "create-collection" + data: '{{tasks.stac-validate.outputs.result}}' + depends: 'create-collection' - name: get-location template: get-location @@ -302,24 +302,24 @@ spec: arguments: parameters: - name: location - value: "{{tasks.get-location.outputs.parameters.location}}" + value: '{{tasks.get-location.outputs.parameters.location}}' template: create-overview - depends: "standardise-validate" + depends: 'standardise-validate' - name: create-config when: "'{{workflow.parameters.target-epsg}}' =~ '2193|3857' && '{{workflow.parameters.compression}}' != 'dem_lerc'" arguments: parameters: - name: location - value: "{{tasks.get-location.outputs.parameters.location}}" + value: '{{tasks.get-location.outputs.parameters.location}}' template: create-config - depends: "create-overview" + depends: 'create-overview' outputs: parameters: - name: target valueFrom: - parameter: "{{tasks.get-location.outputs.parameters.location}}" + parameter: '{{tasks.get-location.outputs.parameters.location}}' # END TEMPLATE `main` - name: collection-id-setup @@ -338,13 +338,13 @@ spec: parameters: - name: collection-id valueFrom: - path: "/tmp/collection-id" + path: '/tmp/collection-id' - name: standardise-validate retryStrategy: - limit: "2" + limit: '2' nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' inputs: parameters: - name: group_id @@ -362,35 +362,35 @@ spec: ephemeral-storage: 3Gi volumeMounts: - name: ephemeral - mountPath: "/tmp" + mountPath: '/tmp' command: - python - - "/app/scripts/standardise_validate.py" + - '/app/scripts/standardise_validate.py' args: - - "--from-file" - - "/tmp/input/{{inputs.parameters.group_id}}.json" - - "--target" - - "{{inputs.parameters.target}}" - - "--preset" - - "{{workflow.parameters.compression}}" - - "--start-datetime" + - '--from-file' + - '/tmp/input/{{inputs.parameters.group_id}}.json' + - '--target' + - '{{inputs.parameters.target}}' + - '--preset' + - '{{workflow.parameters.compression}}' + - '--start-datetime' - "{{=sprig.trim(workflow.parameters['start-datetime'])}}" - - "--end-datetime" + - '--end-datetime' - "{{=sprig.trim(workflow.parameters['end-datetime'])}}" - - "--collection-id" - - "{{inputs.parameters.collection-id}}" - - "--cutline" - - "{{=sprig.trim(workflow.parameters.cutline)}}" - - "--source-epsg" + - '--collection-id' + - '{{inputs.parameters.collection-id}}' + - '--cutline' + - '{{=sprig.trim(workflow.parameters.cutline)}}' + - '--source-epsg' - "{{=sprig.trim(workflow.parameters['source-epsg'])}}" - - "--target-epsg" + - '--target-epsg' - "{{=sprig.trim(workflow.parameters['target-epsg'])}}" - name: create-collection retryStrategy: - limit: "2" + limit: '2' nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' inputs: parameters: - name: collection-id @@ -403,26 +403,26 @@ spec: cpu: 2000m command: - python - - "/app/scripts/collection_from_items.py" + - '/app/scripts/collection_from_items.py' args: - - "--uri" - - "{{inputs.parameters.location}}flat/" - - "--collection-id" - - "{{inputs.parameters.collection-id}}" - - "--title" - - "{{=sprig.trim(workflow.parameters.title)}}" - - "--description" - - "{{=sprig.trim(workflow.parameters.description)}}" - - "--producer" - - "{{workflow.parameters.producer}}" - - "--producer-list" + - '--uri' + - '{{inputs.parameters.location}}flat/' + - '--collection-id' + - '{{inputs.parameters.collection-id}}' + - '--title' + - '{{=sprig.trim(workflow.parameters.title)}}' + - '--description' + - '{{=sprig.trim(workflow.parameters.description)}}' + - '--producer' + - '{{workflow.parameters.producer}}' + - '--producer-list' - "{{=sprig.trim(workflow.parameters['producer-list'])}}" - - "--licensor" - - "{{workflow.parameters.licensor}}" - - "--licensor-list" + - '--licensor' + - '{{workflow.parameters.licensor}}' + - '--licensor-list' - "{{=sprig.trim(workflow.parameters['licensor-list'])}}" - - "--concurrency" - - "25" + - '--concurrency' + - '25' - name: stac-validate inputs: @@ -434,13 +434,7 @@ spec: env: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.json - args: - [ - "stac", - "validate", - "--recursive", - "{{inputs.parameters.location}}flat/collection.json", - ] + args: ['stac', 'validate', '--recursive', '{{inputs.parameters.location}}flat/collection.json'] - name: get-location script: @@ -455,11 +449,11 @@ spec: parameters: - name: location valueFrom: - path: "/tmp/location" + path: '/tmp/location' - name: create-overview retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: location @@ -475,17 +469,17 @@ spec: value: s3://linz-bucket-config/config.json args: [ - "-V", - "create-overview", - "--source", - "{{inputs.parameters.location}}flat/", - "--output", - "{{inputs.parameters.location}}flat/", + '-V', + 'create-overview', + '--source', + '{{inputs.parameters.location}}flat/', + '--output', + '{{inputs.parameters.location}}flat/', ] - name: create-config retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: location @@ -497,18 +491,18 @@ spec: - name: AWS_ROLE_CONFIG_PATH value: s3://linz-bucket-config/config.basemaps.json args: - - "config" - - "{{ inputs.parameters.location }}flat/" + - 'config' + - '{{ inputs.parameters.location }}flat/' outputs: parameters: - name: url description: Basemaps URL to view the imagery valueFrom: - path: "/tmp/cogify/config-url" + path: '/tmp/cogify/config-url' - name: config description: Location of the config file valueFrom: - path: "/tmp/cogify/config-path" + path: '/tmp/cogify/config-path' volumes: - name: ephemeral diff --git a/workflows/imagery/tests.yaml b/workflows/imagery/tests.yaml index 4294e0dc..6ceca867 100644 --- a/workflows/imagery/tests.yaml +++ b/workflows/imagery/tests.yaml @@ -10,7 +10,7 @@ spec: arguments: parameters: - name: version-topo-imagery - value: "latest" + value: 'latest' templateDefaults: container: imagePullPolicy: Always diff --git a/workflows/stac/stac-validate.yaml b/workflows/stac/stac-validate.yaml index 3c7dd5bf..b98cc654 100644 --- a/workflows/stac/stac-validate.yaml +++ b/workflows/stac/stac-validate.yaml @@ -7,23 +7,23 @@ metadata: spec: parallelism: 20 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: - name: version-argo-tasks - value: "v2" + value: 'v2' - name: uri - description: "Path(s) to the STAC file(s)." - value: "s3://linz-imagery-staging/test/stac-validate/" + description: 'Path(s) to the STAC file(s).' + value: 's3://linz-imagery-staging/test/stac-validate/' - name: include - value: "collection.json$" + value: 'collection.json$' - name: checksum - description: "Validate asset checksums." - value: "false" + description: 'Validate asset checksums.' + value: 'false' enum: - - "false" - - "true" + - 'false' + - 'true' templateDefaults: container: imagePullPolicy: Always @@ -38,9 +38,9 @@ spec: arguments: parameters: - name: file - value: "{{item}}" + value: '{{item}}' depends: aws-list-collections - withParam: "{{tasks.aws-list-collections.outputs.parameters.files}}" + withParam: '{{tasks.aws-list-collections.outputs.parameters.files}}' - name: aws-list-collections container: image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{=sprig.trim(workflow.parameters['version-argo-tasks'])}}" @@ -50,15 +50,15 @@ spec: value: s3://linz-bucket-config/config.json args: [ - "list", - "--verbose", - "--include", - "{{=sprig.trim(workflow.parameters.include)}}", - "--group", - "1", - "--output", - "/tmp/file_list.json", - "{{=sprig.trim(workflow.parameters.uri)}}", + 'list', + '--verbose', + '--include', + '{{=sprig.trim(workflow.parameters.include)}}', + '--group', + '1', + '--output', + '/tmp/file_list.json', + '{{=sprig.trim(workflow.parameters.uri)}}', ] outputs: parameters: @@ -67,7 +67,7 @@ spec: path: /tmp/file_list.json - name: stac-validate-collections retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: file @@ -83,11 +83,11 @@ spec: value: s3://linz-bucket-config/config.json args: [ - "stac", - "validate", - "--concurrency", - "50", - "--recursive", - "--checksum={{workflow.parameters.checksum}}", - "{{inputs.parameters.file}}", + 'stac', + 'validate', + '--concurrency', + '50', + '--recursive', + '--checksum={{workflow.parameters.checksum}}', + '{{inputs.parameters.file}}', ] diff --git a/workflows/test/flatten.yaml b/workflows/test/flatten.yaml index 546be4ab..9d2b1344 100644 --- a/workflows/test/flatten.yaml +++ b/workflows/test/flatten.yaml @@ -6,22 +6,22 @@ metadata: namespace: argo spec: nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: - name: version-argo-tasks - value: "latest" + value: 'latest' - name: uri - value: "" + value: '' - name: filter - value: ".tiff?$|.json$" + value: '.tiff?$|.json$' - name: copy-option - value: "--no-clobber" + value: '--no-clobber' enum: - - "--no-clobber" - - "--force" - - "--force-no-clobber" + - '--no-clobber' + - '--force' + - '--force-no-clobber' templateDefaults: container: imagePullPolicy: Always @@ -34,17 +34,17 @@ spec: arguments: parameters: - name: uri - value: "{{workflow.parameters.uri}}" + value: '{{workflow.parameters.uri}}' - name: filter - value: "{{workflow.parameters.filter}}" + value: '{{workflow.parameters.filter}}' - name: flatten-copy template: flatten-copy arguments: parameters: - name: file - value: "{{item}}" - depends: "flatten" - withParam: "{{tasks.flatten.outputs.parameters.files}}" + value: '{{item}}' + depends: 'flatten' + withParam: '{{tasks.flatten.outputs.parameters.files}}' - name: flatten inputs: parameters: @@ -58,17 +58,17 @@ spec: value: s3://linz-bucket-config/config.json args: [ - "flatten", - "--verbose", - "--include", - "{{=sprig.trim(inputs.parameters.filter)}}", - "--group", - "1000", - "--group-size", - "100Gi", - "--output", - "/tmp/file_list.json", - "{{=sprig.trim(inputs.parameters.uri)}}", + 'flatten', + '--verbose', + '--include', + '{{=sprig.trim(inputs.parameters.filter)}}', + '--group', + '1000', + '--group-size', + '100Gi', + '--output', + '/tmp/file_list.json', + '{{=sprig.trim(inputs.parameters.uri)}}', ] outputs: parameters: @@ -77,7 +77,7 @@ spec: path: /tmp/file_list.json - name: flatten-copy retryStrategy: - limit: "2" + limit: '2' inputs: parameters: - name: file @@ -88,9 +88,4 @@ spec: memory: 7.8Gi cpu: 2000m command: [node, /app/index.js] - args: - [ - "copy", - "{{workflow.parameters.copy-option}}", - "{{inputs.parameters.file}}", - ] + args: ['copy', '{{workflow.parameters.copy-option}}', '{{inputs.parameters.file}}'] diff --git a/workflows/test/list.yaml b/workflows/test/list.yaml index f8fb416b..0dc7744b 100644 --- a/workflows/test/list.yaml +++ b/workflows/test/list.yaml @@ -8,9 +8,9 @@ spec: arguments: parameters: - name: version-argo-tasks - value: "latest" + value: 'latest' - name: uri - value: "s3://linz-imagery-staging/test/sample/" + value: 's3://linz-imagery-staging/test/sample/' templateDefaults: container: imagePullPolicy: Always @@ -23,9 +23,9 @@ spec: arguments: parameters: - name: uri - value: "{{workflow.parameters.uri}}" + value: '{{workflow.parameters.uri}}' - name: include - value: ".tiff?$" + value: '.tiff?$' - name: aws-list inputs: parameters: @@ -39,15 +39,15 @@ spec: value: s3://linz-bucket-config/config.json args: [ - "list", - "--verbose", - "--include", - "{{inputs.parameters.include}}", - "--group", - "2", - "--output", - "/tmp/file_list.json", - "{{inputs.parameters.uri}}", + 'list', + '--verbose', + '--include', + '{{inputs.parameters.include}}', + '--group', + '2', + '--output', + '/tmp/file_list.json', + '{{inputs.parameters.uri}}', ] outputs: parameters: diff --git a/workflows/test/sleep.yml b/workflows/test/sleep.yml index d04cda78..0c06e47d 100644 --- a/workflows/test/sleep.yml +++ b/workflows/test/sleep.yml @@ -7,11 +7,11 @@ spec: templates: - name: sleep nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' container: resources: requests: memory: 3.9Gi cpu: 2000m image: ubuntu:22.04 - command: ["sleep", "3600"] + command: ['sleep', '3600'] diff --git a/workflows/tiv.yml b/workflows/tiv.yml index 530db5e6..3c6e52c5 100644 --- a/workflows/tiv.yml +++ b/workflows/tiv.yml @@ -6,7 +6,7 @@ spec: arguments: parameters: - name: version_argo_tasks - value: "v2.10.0-3-g83e7420" + value: 'v2.10.0-3-g83e7420' entrypoint: main templates: - name: main @@ -29,7 +29,7 @@ spec: value: 2193 - name: version - value: "{{= workflow.parameters.version_argo_tasks }}" + value: '{{= workflow.parameters.version_argo_tasks }}' - name: group templateRef: @@ -39,32 +39,32 @@ spec: arguments: artifacts: - name: input - from: "{{ tasks.tile-index-validate.outputs.artifacts.files }}" + from: '{{ tasks.tile-index-validate.outputs.artifacts.files }}' parameters: - name: size value: 5 - name: version - value: "{{= workflow.parameters.version_argo_tasks }}" + value: '{{= workflow.parameters.version_argo_tasks }}' - depends: "tile-index-validate" + depends: 'tile-index-validate' - name: process template: echo - withParam: "{{ tasks.group.outputs.parameters.output }}" + withParam: '{{ tasks.group.outputs.parameters.output }}' arguments: parameters: - name: echo - value: "{{ item }}" - depends: "group" + value: '{{ item }}' + depends: 'group' - name: echo inputs: parameters: - name: echo container: - image: "019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{= workflow.parameters.version_argo_tasks }}" + image: '019359803926.dkr.ecr.ap-southeast-2.amazonaws.com/argo-tasks:{{= workflow.parameters.version_argo_tasks }}' command: [echo] args: - - "{{inputs.parameters.echo}}" + - '{{inputs.parameters.echo}}' diff --git a/workflows/util/create-thumbnails.yaml b/workflows/util/create-thumbnails.yaml index 0ae614d0..d5f026de 100644 --- a/workflows/util/create-thumbnails.yaml +++ b/workflows/util/create-thumbnails.yaml @@ -7,29 +7,29 @@ metadata: spec: parallelism: 50 nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' entrypoint: main arguments: parameters: # FIXME: Should use camelCase or underscore? - name: version-argo-tasks - value: "v2" + value: 'v2' - name: version-topo-imagery - value: "v3" + value: 'v3' - name: source - value: "s3://linz-topographic-upload/maps/topo50/" + value: 's3://linz-topographic-upload/maps/topo50/' - name: target - value: "s3://linz-" + value: 's3://linz-' - name: include - value: ".*.*.tif?$" + value: '.*.*.tif?$' - name: transform - value: "f" + value: 'f' - name: copy-option - value: "--no-clobber" + value: '--no-clobber' enum: - - "--no-clobber" - - "--force" - - "--force-no-clobber" + - '--no-clobber' + - '--force' + - '--force-no-clobber' templateDefaults: container: imagePullPolicy: Always @@ -48,11 +48,11 @@ spec: arguments: parameters: - name: target - value: "{{tasks.get-location.outputs.parameters.location}}thumbnails/" + value: '{{tasks.get-location.outputs.parameters.location}}thumbnails/' artifacts: - name: files - from: "{{ tasks.aws-list.outputs.artifacts.files }}" - depends: "aws-list && get-location" + from: '{{ tasks.aws-list.outputs.artifacts.files }}' + depends: 'aws-list && get-location' - name: publish-source templateRef: @@ -61,14 +61,14 @@ spec: arguments: parameters: - name: source - value: "{{workflow.parameters.source}}" + value: '{{workflow.parameters.source}}' - name: include - value: "{{workflow.parameters.include}}" + value: '{{workflow.parameters.include}}' - name: group - value: "1000" + value: '1000' - name: group-size - value: "100Gi" - depends: "thumbnails" + value: '100Gi' + depends: 'thumbnails' - name: publish-thumbnails templateRef: @@ -77,14 +77,14 @@ spec: arguments: parameters: - name: source - value: "{{tasks.get-location.outputs.parameters.location}}thumbnails/" + value: '{{tasks.get-location.outputs.parameters.location}}thumbnails/' - name: include - value: ".jpg?$" + value: '.jpg?$' - name: group - value: "1000" + value: '1000' - name: group-size - value: "100Gi" - depends: "thumbnails" + value: '100Gi' + depends: 'thumbnails' # END TEMPLATE `main` - name: aws-list @@ -97,15 +97,15 @@ spec: value: s3://linz-bucket-config/config.json args: [ - "list", - "--verbose", - "--include", - "{{workflow.parameters.include}}", - "--group", - "2000", - "--output", - "/tmp/file_list.json", - "{{workflow.parameters.source}}", + 'list', + '--verbose', + '--include', + '{{workflow.parameters.include}}', + '--group', + '2000', + '--output', + '/tmp/file_list.json', + '{{workflow.parameters.source}}', ] outputs: artifacts: @@ -114,9 +114,9 @@ spec: - name: thumbnails retryStrategy: - limit: "2" + limit: '2' nodeSelector: - karpenter.sh/capacity-type: "spot" + karpenter.sh/capacity-type: 'spot' inputs: parameters: - name: target @@ -132,15 +132,15 @@ spec: ephemeral-storage: 3Gi volumeMounts: - name: ephemeral - mountPath: "/tmp" + mountPath: '/tmp' command: - python - - "/app/scripts/thumbnails.py" + - '/app/scripts/thumbnails.py' args: - - "--from-file" - - "/tmp/file_list.json" - - "--target" - - "{{inputs.parameters.target}}" + - '--from-file' + - '/tmp/file_list.json' + - '--target' + - '{{inputs.parameters.target}}' - name: get-location script: @@ -155,7 +155,7 @@ spec: parameters: - name: location valueFrom: - path: "/tmp/location" + path: '/tmp/location' volumes: - name: ephemeral