diff --git a/.eslintrc.js b/.eslintrc.js index 0a7b0bbfa3..74cffa6763 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -91,7 +91,7 @@ module.exports = { "no-param-reassign": [0], "no-continue": [0], "no-unused-vars": [ - 2, + 1, { vars: "all", args: "after-used", diff --git a/package.json b/package.json index fe8830aaac..4fa7f7ffd8 100644 --- a/package.json +++ b/package.json @@ -8,22 +8,36 @@ "packages/*" ], "devDependencies": { + "@types/jest": "^29.5.11", + "@types/lodash.camelcase": "^4.3.7", + "@types/lodash.clonedeep": "^4.5.7", + "@types/lodash.defaults": "^4.2.7", + "@types/lodash.get": "^4.4.7", + "@types/lodash.omit": "^4.5.7", + "@types/lodash.pick": "^4.4.7", + "@types/lodash.set": "^4.3.7", + "@types/micromatch": "^4.0.2", + "@types/node": "^20.10.5", + "@types/pino": "^7.0.5", "commit-and-tag-version": "^11.0.0", "docsify-cli": "^4.4.4", - "eslint": "^8.26.0", + "eslint": "^8.31.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-prettier": "^8.5.0", + "eslint-config-prettier": "^8.6.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.0.0", + "eslint-plugin-jest": "^27.2.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^4.0.0", - "fs-extra": "^11.1.1", - "husky": "^8.0.0", + "eslint-plugin-prettier": "^4.2.1", + "fs-extra": "^11.1.0", + "husky": "^8.0.3", "js-yaml": "^4.1.0", - "lint-staged": "^13.0.0", - "prettier": "^2.6.2", + "kubernetes-models": "^4.1.0", + "lint-staged": "^13.1.0", + "prettier": "^2.8.1", "renovate": "^35.0.0", + "standard-version": "^9.5.0", + "typescript": "^4.9.4", "~dev-tools": "workspace:^" }, "resolutions": { @@ -65,7 +79,9 @@ "docker:kontinuous:build": "DOCKER_BUILDKIT=1 docker build --progress=plain -f packages/kontinuous/Dockerfile -t kontinuous .", "docker:kontinuous:run": "docker run -it -v $PWD:/workspace -v $(dirname $KUBECONFIG):/home/node/.kube -e KUBECONFIG=/home/node/.kube/$(basename $KUBECONFIG) kontinuous", "docker:kontinuous": "yarn docker:kontinuous:build && yarn docker:kontinuous:run", - "logs:remote-webhook": "kubectl --context prod -n kontinuous-webhook logs -f --all-containers -l component=kontinuous-webhook" + "logs:remote-webhook": "kubectl --context prod -n kontinuous-webhook logs -f --all-containers -l component=kontinuous-webhook", + "upgrade:modjo": "yarn up -R \"@modjo-plugins/*\"", + "ts:check": "tsc -p tsconfig.json" }, "lint-staged": { "*.js": [ diff --git a/packages/common/config/load-config.js b/packages/common/config/load-config.js index ce8f37ccd3..ebf77f92aa 100644 --- a/packages/common/config/load-config.js +++ b/packages/common/config/load-config.js @@ -15,7 +15,12 @@ const configDependencyKey = require("~common/utils/config-dependency-key") const lowerKeys = require("~common/utils/lower-keys") const ctx = require("../ctx") const patternMatch = require("../utils/pattern-match") -const loadStructuredConfig = require("../utils/load-structured-config") + +const loadStructuredConfig = + /** @type {import("../utils/load-structured-config").LoadStructuredConfig} */ ( + /** @type {unknown} */ (require("../utils/load-structured-config")) + ) + const getGitRef = require("../utils/get-git-ref") const getGitSha = require("../utils/get-git-sha") const getGitUrl = require("../utils/get-git-url") diff --git a/packages/common/config/load-dependencies.js b/packages/common/config/load-dependencies.js index 010f75d802..a1df782195 100644 --- a/packages/common/config/load-dependencies.js +++ b/packages/common/config/load-dependencies.js @@ -12,6 +12,13 @@ const patternMatch = require("../utils/pattern-match") const copyFilter = require("./copy-filter") const loadGitOrgConfig = require("./load-git-org-config") +/** + * + * @param {*} config + * @param {import("../utils")["logger"]} logger + * @param {*} reloadConfig + * @returns {Promise} + */ module.exports = async (config, logger, reloadConfig) => { logger.debug("🔻 load dependencies") diff --git a/packages/common/config/load-git-org-config.js b/packages/common/config/load-git-org-config.js index a6a67de852..9588004b5e 100644 --- a/packages/common/config/load-git-org-config.js +++ b/packages/common/config/load-git-org-config.js @@ -3,9 +3,20 @@ const defaultsDeep = require("lodash.defaultsdeep") const normalizeRepositoryUrl = require("~common/utils/normalize-repository-url") const getGitRemoteDefaultBranch = require("~common/utils/get-git-remote-default-branch") -const parseGitUrl = require("~common/utils/parse-git-url") + +const parseGitUrl = + /** @type {import("../utils/parse-git-url").ParseGithubUrl} */ ( + /** @type {unknown} */ (require("~common/utils/parse-git-url")) + ) + const downloadGitOrgConfig = require("./download-git-org-config") +/** + * + * @param {object} config + * @param {Function} reloadConfig + * @returns + */ module.exports = async (config, reloadConfig) => { const { gitOrg, diff --git a/packages/common/utils/async-shell.js b/packages/common/utils/async-shell.js index 685454136b..17a9c8dafc 100644 --- a/packages/common/utils/async-shell.js +++ b/packages/common/utils/async-shell.js @@ -4,13 +4,23 @@ const getLogger = require("./get-logger") const parseCommand = require("./parse-command") const ProgramError = require("./program-error.class") +/** + * + * @param {import("child_process").ChildProcess} child + * @param {null | ((child: import("child_process").ChildProcessWithoutNullStreams) => void)} callback + * @param {Kontinuous.Patch.Context["logger"]} logger + * @param {{ignoreErrors?: string[]}} extraOptions + * @returns + */ const promiseFromChildProcess = (child, callback, logger, extraOptions) => { const { ignoreErrors = [] } = extraOptions child.on("error", () => {}) // avoid crash on not found executable + /** @type {Buffer[]} */ const out = [] child.stdout.on("data", (data) => { out.push(data) }) + /** @type {Buffer[]} */ const err = [] child.stderr.on("data", (data) => { if (ignoreErrors.some((errCatch) => data.includes(errCatch))) { @@ -39,7 +49,15 @@ const promiseFromChildProcess = (child, callback, logger, extraOptions) => { }) }) } - +/** + * + * @param {string|string[]} arg + * @param {Record} options + * @param {((child: import("child_process").ChildProcess) => void)} [callback] + * @param {Kontinuous.Patch.Context["logger"]} logger + * @param {{ignoreErrors?: string[]}} extraOptions + * @returns + */ module.exports = ( arg, options = {}, diff --git a/packages/common/utils/axios-retry.js b/packages/common/utils/axios-retry.js index 00ec5f5730..fa3167d4f0 100644 --- a/packages/common/utils/axios-retry.js +++ b/packages/common/utils/axios-retry.js @@ -1,5 +1,5 @@ -const axios = require("axios") -const axiosRetry = require("axios-retry") +const { default: axios } = require("axios") +const { default: axiosRetry } = require("axios-retry") const kontinuousVersion = require("./kontinuous-version") diff --git a/packages/common/utils/check-namespace-is-available.js b/packages/common/utils/check-namespace-is-available.js index 6c6397c95f..daba0cc29a 100644 --- a/packages/common/utils/check-namespace-is-available.js +++ b/packages/common/utils/check-namespace-is-available.js @@ -2,6 +2,20 @@ const kubectlRetry = require("./kubectl-retry") const getLogger = require("./get-logger") +/** + * + * @param {object} param0 + * @param {string} param0.kubeconfig + * @param {string} param0.kubeconfigContext + * @param {string} param0.namespace + * @param {Kontinuous.Patch.Context["logger"]} [param0.logger] + * @param {Function} [param0.check] + * @param {boolean} [param0.bail] + * @param {boolean} [param0.surviveOnBrokenCluster] + * @param {import("./kubectl-retry").KubectlRetryOptions} [param0.retryOptions] + * @param {Function} [param0.kubectl] + * @returns + */ module.exports = async ({ kubeconfig, kubeconfigContext, diff --git a/packages/common/utils/deepmerge.js b/packages/common/utils/deepmerge.js index a2f7a49015..9c8791e687 100644 --- a/packages/common/utils/deepmerge.js +++ b/packages/common/utils/deepmerge.js @@ -1,5 +1,11 @@ const mergeWith = require("lodash.mergewith") +/** + * Helm like deep merge + * @param {object} objValue + * @param {...object} srcValues + * @returns {object} + */ module.exports = (objValue, ...srcValues) => mergeWith(objValue, ...srcValues, (oValue, srcValue) => { if (Array.isArray(oValue)) { diff --git a/packages/common/utils/degit-tag-has-changed.js b/packages/common/utils/degit-tag-has-changed.js index 76afcc33a4..6f8013bc17 100644 --- a/packages/common/utils/degit-tag-has-changed.js +++ b/packages/common/utils/degit-tag-has-changed.js @@ -7,6 +7,7 @@ const asyncShell = require("./async-shell") const normalizeRepositoryUrl = require("./normalize-repository-url") const getLogger = require("./get-logger") +/** @type {Record} */ const supported = { github: ".com", gitlab: ".com", @@ -15,6 +16,11 @@ const supported = { "git.sr.ht": ".ht", } +/** + * + * @param {string} src + * @returns {{site:string, user:string, name:string, ref:string, url:string, ssh:string, subdir:string, mode:string}} + */ function parse(src) { const match = /^(?:(?:https:\/\/)?([^:/]+\.[^:/]+)\/|git@([^:/]+)[:/]|([^/]+):)?([^/\s]+)\/([^/\s#]+)(?:((?:\/[^/\s#]+)+))?(?:\/)?(?:#(.+))?/.exec( @@ -46,6 +52,11 @@ function parse(src) { return { site: siteName, user, name, ref, url, ssh, subdir, mode } } +/** + * + * @param {string} target + * @returns boolean + */ module.exports = async (target, logger = getLogger()) => { const base = path.join(os.homedir(), ".degit") const repo = parse(target) diff --git a/packages/common/utils/get-logger.js b/packages/common/utils/get-logger.js index ad9030d327..259351b027 100644 --- a/packages/common/utils/get-logger.js +++ b/packages/common/utils/get-logger.js @@ -1,4 +1,5 @@ const ctx = require("~common/ctx") const createLogger = require("./direct-logger-factory") +/** @type {() => Kontinuous.Patch.Context["logger"]} */ module.exports = () => ctx.getDefault("logger") || createLogger() diff --git a/packages/common/utils/ignore-yarn-state.js b/packages/common/utils/ignore-yarn-state.js index 729e4c9fc5..11c71600c7 100644 --- a/packages/common/utils/ignore-yarn-state.js +++ b/packages/common/utils/ignore-yarn-state.js @@ -7,6 +7,10 @@ const yarnNotIgnore = [ ".yarn/cache", ] +/** + * @param {string} src + * @returns boolean + */ module.exports = (src) => { if (src.includes("node_modules/") || src.endsWith("node_modules")) { return false diff --git a/packages/common/utils/index.js b/packages/common/utils/index.js index d22801a156..0eaee709ba 100644 --- a/packages/common/utils/index.js +++ b/packages/common/utils/index.js @@ -1,7 +1,8 @@ -module.exports = { +const utils = { degit: require("tiged"), fs: require("fs-extra"), get logger() { + /** @type {Kontinuous.Patch.Context["logger"]} */ return require("./get-logger")() }, asyncShell: require("./async-shell"), @@ -119,3 +120,5 @@ module.exports = { matchLinkRemap: require("./match-link-remap"), detectKubeVersion: require("./detect-kube-version"), } + +module.exports = utils diff --git a/packages/common/utils/is-version-tag.js b/packages/common/utils/is-version-tag.js index 0b00849c4f..f741cec9a3 100644 --- a/packages/common/utils/is-version-tag.js +++ b/packages/common/utils/is-version-tag.js @@ -2,4 +2,8 @@ const versionTagSemverRe = /^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ +/** + * @param {string} tag + * @returns boolean + */ module.exports = (tag) => versionTagSemverRe.test(tag) diff --git a/packages/common/utils/kind-is-runnable.js b/packages/common/utils/kind-is-runnable.js new file mode 100644 index 0000000000..6073e161c8 --- /dev/null +++ b/packages/common/utils/kind-is-runnable.js @@ -0,0 +1,8 @@ +const kindsRunnable = ["Deployment", "Job", "DaemonSet", "StatefulSet"] + +/** + * + * @param {Kontinuous.Manifest} manifest + * @returns {manifest is Kontinuous.RunnableManifest} + */ +module.exports = (manifest) => kindsRunnable.includes(manifest.kind) diff --git a/packages/common/utils/kubectl-retry.js b/packages/common/utils/kubectl-retry.js index 43e1b73cd0..8d2325813e 100644 --- a/packages/common/utils/kubectl-retry.js +++ b/packages/common/utils/kubectl-retry.js @@ -7,6 +7,22 @@ const getLogger = require("./get-logger") const retriableOnBrokenCluster = require("./retriable-on-broken-cluster") const retriableNetwork = require("./retriable-network") +/** + * @typedef {Object} KubectlRunOptions + * @prop {string} [kubeconfig] + * @prop {string} [kubeconfigContext] + * @prop {string[]} [ignoreErrors] + * @prop {string} [stdin] + * @prop {string} [abortSignal] + * @prop {import('child_process').ChildProcess[]} [collectProcesses] + */ + +/** + * + * @param {string|string[]} kubectlArgs + * @param {KubectlRunOptions} options + * @returns void + */ const kubectlRun = async (kubectlArgs, options = {}) => { const { kubeconfig, @@ -29,7 +45,7 @@ const kubectlRun = async (kubectlArgs, options = {}) => { return new Promise((resolve, reject) => { const proc = spawn(cmd, args, { - encoding: "utf-8", + // encoding: "utf-8", env: { ...process.env, ...(kubeconfig ? { KUBECONFIG: kubeconfig } : {}), @@ -79,6 +95,26 @@ const kubectlRun = async (kubectlArgs, options = {}) => { }) } +/** + * @typedef {Object} KubectlRetryOptions + * @prop {any} [logger] + * @prop {any} [sentry] + * @prop {string} [kubeconfig] + * @prop {string} [kubeconfigContext] + * @prop {Record} [retryOptions] + * @prop {boolean} [logError] + * @prop {boolean} [logInfo] + * @prop {string[]} [ignoreErrors] + * @prop {import('child_process').ChildProcess[]} [collectProcesses] + * @prop {boolean} [surviveOnBrokenCluster] + */ + +/** + * + * @param {string|string[]} kubectlArgs + * @param {KubectlRetryOptions} options + * @returns string + */ module.exports = async (kubectlArgs, options = {}) => { const { logger = getLogger(), diff --git a/packages/common/utils/load-structured-config.d.ts b/packages/common/utils/load-structured-config.d.ts new file mode 100644 index 0000000000..6702c517c3 --- /dev/null +++ b/packages/common/utils/load-structured-config.d.ts @@ -0,0 +1,21 @@ +export type CompilerConfig = object; + +export type StructuredconfigOptions = { + configBasename?: string; + inlineConfigs?: object[]; + configDirs?: string[]; + configPreCompilers?: CompilerConfig[]; + configOverride?: object; + env: Record; + options: object; + mergeWith?: void; + emptyAsUndefined?: boolean; + rootConfig: object; + configMeta: object; +}; + +export type LoadStructuredConfig = ( + arg0: StructuredconfigOptions +) => Promise>; + +export default LoadStructuredConfig; diff --git a/packages/common/utils/load-structured-config.js b/packages/common/utils/load-structured-config.js index 2d750bed9b..a3415d1360 100644 --- a/packages/common/utils/load-structured-config.js +++ b/packages/common/utils/load-structured-config.js @@ -15,7 +15,8 @@ const undefinedCheck = (val) => val === undefined const emptyAsUndefinedCheck = (val) => val === undefined || val === "" || val === null -module.exports = async ({ +/** @type {import("./load-structured-config") } */ +module.exports = /** @type {import("./load-structured-config") } */ async ({ configBasename = "config", inlineConfigs = [], configDirs = [], diff --git a/packages/common/utils/need-helm.js b/packages/common/utils/need-helm.js index 980e8992b1..ef9a9e1a6e 100644 --- a/packages/common/utils/need-helm.js +++ b/packages/common/utils/need-helm.js @@ -27,7 +27,7 @@ const download = async (options) => { switch (platform) { case "darwin": break - case "windows": + case "win32": ext = ".exe" break case "linux": diff --git a/packages/common/utils/need-kapp.js b/packages/common/utils/need-kapp.js index 4ef7d550c5..23e0909384 100644 --- a/packages/common/utils/need-kapp.js +++ b/packages/common/utils/need-kapp.js @@ -24,7 +24,7 @@ const download = async (options) => { switch (platform) { case "darwin": break - case "windows": + case "win32": ext = ".exe" break case "linux": diff --git a/packages/common/utils/need-kubectl.js b/packages/common/utils/need-kubectl.js index efd4b0764b..ec61b04965 100644 --- a/packages/common/utils/need-kubectl.js +++ b/packages/common/utils/need-kubectl.js @@ -24,7 +24,7 @@ const download = async (options) => { switch (platform) { case "darwin": break - case "windows": + case "win32": ext = ".exe" break case "linux": diff --git a/packages/common/utils/need-rollout-status.js b/packages/common/utils/need-rollout-status.js index 21f3c13681..15869656dc 100644 --- a/packages/common/utils/need-rollout-status.js +++ b/packages/common/utils/need-rollout-status.js @@ -25,7 +25,7 @@ const download = async (options) => { switch (platform) { case "darwin": break - case "windows": + case "win32": ext = ".exe" break case "linux": diff --git a/packages/common/utils/need-stern.js b/packages/common/utils/need-stern.js index 5af4160853..0522b85b69 100644 --- a/packages/common/utils/need-stern.js +++ b/packages/common/utils/need-stern.js @@ -25,7 +25,7 @@ const download = async (options) => { switch (platform) { case "darwin": break - case "windows": + case "win32": ext = ".exe" break case "linux": diff --git a/packages/common/utils/parse-command.js b/packages/common/utils/parse-command.js index cbca40d01d..406bfd2000 100644 --- a/packages/common/utils/parse-command.js +++ b/packages/common/utils/parse-command.js @@ -1,3 +1,8 @@ +/** + * + * @param {string|string[]} arg + * @returns {[cmd: string, args:string[]]} + */ module.exports = (arg) => { if (typeof arg === "string") { arg = arg diff --git a/packages/common/utils/parse-github-url.d.ts b/packages/common/utils/parse-github-url.d.ts new file mode 100644 index 0000000000..ed2ba0ff7d --- /dev/null +++ b/packages/common/utils/parse-github-url.d.ts @@ -0,0 +1,17 @@ +import ParsedUrl from "parse-url"; + +type AdditionalInfos = { + host: string; + repository: string; + owner: string; + name: string; + repo: string; + href: string; + branch: string; + blob: string; + path: string; + filepath: string; +}; +type GitHubUrl = Partial & AdditionalInfos>; + +type ParseGithubUrl = (string) => GitHubUrl; diff --git a/packages/common/utils/parse-github-url.js b/packages/common/utils/parse-github-url.js index 7fa8ba8c69..73416adf5d 100644 --- a/packages/common/utils/parse-github-url.js +++ b/packages/common/utils/parse-github-url.js @@ -43,6 +43,7 @@ module.exports = (str) => { } // parse the URL + /** @type {Partial & { host:string, repository: string, owner: string,name: string,repo: string,href: string,branch: string, blob:string, path:string, filepath:string}>} */ let obj if (str.includes(":")) { obj = parseUrl(str) @@ -56,6 +57,7 @@ module.exports = (str) => { if (!obj.host && /^git@/.test(str) === true) { // return the correct host for git@ URLs const urlObject = parseUrl(`http://${str}`) + // @ts-ignore waiting for update parse-url types... https://github.com/IonicaBizau/parse-url/issues/71 obj.host = urlObject.host } diff --git a/packages/common/utils/pattern-match.js b/packages/common/utils/pattern-match.js index 60302023d4..800b164fbe 100644 --- a/packages/common/utils/pattern-match.js +++ b/packages/common/utils/pattern-match.js @@ -1,5 +1,11 @@ const micromatch = require("micromatch") +/** + * @param {string[]} str + * @param {string} pattern + * @param {Record} options + * @returns + */ module.exports = (str, pattern, options = {}) => micromatch.match(str, pattern, { regex: true, diff --git a/packages/common/utils/rollout-status-exec.js b/packages/common/utils/rollout-status-exec.js index 3c53662e23..533dc34c40 100644 --- a/packages/common/utils/rollout-status-exec.js +++ b/packages/common/utils/rollout-status-exec.js @@ -1,5 +1,6 @@ const { spawn } = require("child_process") +/** @type {import(".").RolloutStatusExec} */ module.exports = ({ kubeconfig, kubecontext, @@ -8,7 +9,7 @@ module.exports = ({ kindFilter, pendingDeadLineSeconds, ignoreSecretNotFound, - intervalSeconds, + intervalSeconds = null, abortSignal, }) => { const args = [] @@ -37,7 +38,6 @@ module.exports = ({ args.push(...["-kind-filter", kindFilter.toLowerCase()]) } const proc = spawn("rollout-status", args, { - encoding: "utf-8", signal: abortSignal, }) proc.on("error", () => {}) // avoid crash on not found executable @@ -57,6 +57,7 @@ module.exports = ({ const resultStr = Buffer.concat(out).toString() let result try { + // todo: type rollout status json result = JSON.parse(resultStr) resolve(result) } catch (_err) { diff --git a/packages/common/utils/rollout-status.js b/packages/common/utils/rollout-status.js index eaac892191..b2466b913c 100644 --- a/packages/common/utils/rollout-status.js +++ b/packages/common/utils/rollout-status.js @@ -5,6 +5,7 @@ const retriableOnBrokenCluster = require("./retriable-on-broken-cluster") const getLogger = require("./get-logger") +/** @type {import(".").RolloutStatus} */ module.exports = async ({ kubeconfig, kubecontext, @@ -67,6 +68,7 @@ module.exports = async ({ return retry( async (bail) => { + /** @type {object} */ let status let error try { @@ -86,31 +88,35 @@ module.exports = async ({ { namespace, selector }, `🦆 rollout-status result: ${JSON.stringify(status)}` ) - if (status.error?.code === "") { - throw new Error(status.error.message) + if ("error" in status) { + if (status.error?.code === "") { + throw new Error(status.error.message) + } } } catch (err) { throwRetriableError(err) error = err } - const errorMessage = status?.error?.message - if ( - retryErrImagePull && - (errorMessage?.includes("ErrImagePull") || - errorMessage?.includes("ImagePullBackOff")) - ) { - throwErrorToRetry({ - error: new Error(status.error.message), - message: `🐍 rollout-status registry error(ErrImagePull): retrying...`, - type: "err-image-pull", - }) - } - if (status?.error?.type === "program") { - throwErrorToRetry({ - error: new Error(status.error.message), - message: `🐍 rollout-status program error: ${status.error.message}: retrying...`, - type: "rollout-status-program", - }) + if ("error" in status) { + const errorMessage = status.error?.message + if ( + retryErrImagePull && + (errorMessage?.includes("ErrImagePull") || + errorMessage?.includes("ImagePullBackOff")) + ) { + throwErrorToRetry({ + error: new Error(status.error.message), + message: `🐍 rollout-status registry error(ErrImagePull): retrying...`, + type: "err-image-pull", + }) + } + if (status?.error?.type === "program") { + throwErrorToRetry({ + error: new Error(status.error.message), + message: `🐍 rollout-status program error: ${status.error.message}: retrying...`, + type: "rollout-status-program", + }) + } } if (error) { bail(error) diff --git a/packages/common/utils/sanitize-label.js b/packages/common/utils/sanitize-label.js index 1686bf12cf..b67da498d8 100644 --- a/packages/common/utils/sanitize-label.js +++ b/packages/common/utils/sanitize-label.js @@ -1,3 +1,8 @@ +/** + * @param {string} label + * @param {string} prefixIfNeeded + * @returns string + */ module.exports = (label, prefixIfNeeded = "v") => { label = label.replace(/[^a-zA-Z0-9._-]+/g, "-") if (!/^[a-zA-Z0-9]/.test(label)) { diff --git a/packages/common/utils/slug.js b/packages/common/utils/slug.js index eb1485dc53..57b304ead0 100644 --- a/packages/common/utils/slug.js +++ b/packages/common/utils/slug.js @@ -14,6 +14,11 @@ slugify.extend({ const KUBERNETS_MAX_NAME_LENGTH = 63 const SUFFIX_SHA_LENGTH = 8 +/** + * @param {string} name + * @param {number} len + * @returns number + */ const suffix = (name, len = SUFFIX_SHA_LENGTH) => { const hex = Buffer.from( createHash("sha256").update(name).digest("hex") @@ -22,6 +27,14 @@ const suffix = (name, len = SUFFIX_SHA_LENGTH) => { return parseInt(hex, 16).toString(36).slice(0, len) } +/** + * + * @param {string} name + * @param {number} len + * @param {number} shalen + * @param {string} [slugSource] + * @returns + */ const slugString = (name, len, shalen, slugSource = name) => { let slugified = slugify(name, { lower: true, @@ -43,6 +56,12 @@ const slugString = (name, len, shalen, slugSource = name) => { return slugified } +/** + * + * @param {string[]|string} mixed + * @param {undefined | ({shaLength?:number, maxLength?:number, partMaxLength?:number, glue?:string})} options + * @returns string + */ const slug = (mixed, options = {}) => { const { maxLength = KUBERNETS_MAX_NAME_LENGTH, diff --git a/packages/common/utils/time-logger.js b/packages/common/utils/time-logger.js index 4d40a3b059..95c09a8507 100644 --- a/packages/common/utils/time-logger.js +++ b/packages/common/utils/time-logger.js @@ -1,3 +1,4 @@ +// @ts-nocheck const prettyTime = require("./pretty-time") function TimeLogger({ @@ -11,6 +12,7 @@ function TimeLogger({ this.label = label this.logLevel = logLevel } + Object.assign(TimeLogger.prototype, { end(options = {}) { if (options.logger) { @@ -23,7 +25,9 @@ Object.assign(TimeLogger.prototype, { this.logLevel = options.logLevel } this.logger[this.logLevel]( - `${this.label}: ${prettyTime(new Date() - this.startTime)}` + `${this.label}: ${prettyTime( + new Date().getTime() - this.startTime.getTime() + )}` ) }, }) diff --git a/packages/common/utils/ucfirst.js b/packages/common/utils/ucfirst.js index 913236db1f..9674ddb2c6 100644 --- a/packages/common/utils/ucfirst.js +++ b/packages/common/utils/ucfirst.js @@ -1 +1,5 @@ +/** + * @param {string} str + * @returns string + */ module.exports = (str) => str[0].toUpperCase() + str.slice(1) diff --git a/packages/common/utils/utils.d.ts b/packages/common/utils/utils.d.ts new file mode 100644 index 0000000000..afc310f318 --- /dev/null +++ b/packages/common/utils/utils.d.ts @@ -0,0 +1,40 @@ +import { ChildProcessWithoutNullStreams } from "child_process"; + +import { NodeClient as SentryNodeClient } from "@sentry/node"; + +type RolloutStatusCommonParams = { + kubeconfig: string; + kubecontext: string; + namespace: string; + selector: string; + kindFilter: string; + pendingDeadLineSeconds: number; + ignoreSecretNotFound: boolean; + abortSignal: AbortSignal; +}; + +type RolloutStatusExecParams = RolloutStatusCommonParams & { + intervalSeconds?: number; +}; + +type RolloutStatusParams = RolloutStatusCommonParams & { + logger?: Kontinuous.Utils["logger"]; + retryErrImagePull: boolean; + surviveOnBrokenCluster: boolean; + retries: number; + sentry: SentryNodeClient; +}; + +type ErrorResult = { + error: { code: string; message: string }; +}; + +type RolloutStatusExec = (arg0: RolloutStatusExecParams) => { + process: ChildProcessWithoutNullStreams; + promise: Promise; +}; + +type RolloutStatus = (arg0: RolloutStatusParams) => { + //process: ChildProcessWithoutNullStreams; + //promise: Promise; +}; diff --git a/packages/kontinuous/tsconfig.json b/packages/kontinuous/tsconfig.json index 0c96227fbc..0116007372 100644 --- a/packages/kontinuous/tsconfig.json +++ b/packages/kontinuous/tsconfig.json @@ -1,8 +1,6 @@ { - "compilerOptions": { - "lib": [ - "ES2020" - ], + "compilerOptions": { + "lib": ["ES2020"], "module": "ES2020", "target": "ES2020", "strict": true, @@ -11,8 +9,10 @@ "forceConsistentCasingInFileNames": true, "moduleResolution": "node", "allowJs": true, + "checkJs": true, "noImplicitAny": false, "isolatedModules": false, + "noEmit": true, "baseUrl": ".", "paths": { "~/*": ["./src/*"], @@ -20,7 +20,6 @@ "helm-tree/*": ["../helm-tree/*"] } }, - "exclude":[ - "./node_modules" - ] -} \ No newline at end of file + "exclude": ["./node_modules"], + "include": ["./packages/common/utils/**.js"] +} diff --git a/plugins/contrib/Chart.yaml b/plugins/contrib/Chart.yaml index d8f51654db..23ad0df7c4 100644 --- a/plugins/contrib/Chart.yaml +++ b/plugins/contrib/Chart.yaml @@ -57,3 +57,7 @@ dependencies: repository: file://./charts/redis version: 1.168.9 condition: redis.enabled + - name: maildev + degit: socialgouv/helm-charts/charts/maildev@v1 + condition: maildev.enabled + version: "1" diff --git a/plugins/contrib/debug-manifests/02-dependencies-tree-infos.js b/plugins/contrib/debug-manifests/02-dependencies-tree-infos.js index 09e3c39e6a..fb92a92ecb 100644 --- a/plugins/contrib/debug-manifests/02-dependencies-tree-infos.js +++ b/plugins/contrib/debug-manifests/02-dependencies-tree-infos.js @@ -19,7 +19,7 @@ module.exports = async (manifests, options, context) => { const umlSet = new Set() for (const manifest of manifests) { - const { metadata, kind } = manifest + const { metadata } = manifest const annotations = metadata?.annotations if (!annotations) { continue @@ -27,7 +27,7 @@ module.exports = async (manifests, options, context) => { const yamlNeeds = annotations["kontinuous/plugin.needs"] - if (!kindIsWaitable(kind, options.customWaitableKinds)) { + if (!kindIsWaitable(manifest)) { continue } diff --git a/plugins/contrib/deploy-sidecars/stern.js b/plugins/contrib/deploy-sidecars/stern.js index 3a3737fdde..9c6b006389 100644 --- a/plugins/contrib/deploy-sidecars/stern.js +++ b/plugins/contrib/deploy-sidecars/stern.js @@ -1,5 +1,11 @@ const { spawn } = require("child_process") +/** + * + * @param {*} options + * @param {{utils: Utils}} param1 + * @returns + */ module.exports = async ( options, { config, logger, utils, needBin, manifests, dryRun, ctx } diff --git a/plugins/contrib/deploy-with/index.d.ts b/plugins/contrib/deploy-with/index.d.ts new file mode 100644 index 0000000000..9bc3f26d77 --- /dev/null +++ b/plugins/contrib/deploy-with/index.d.ts @@ -0,0 +1,29 @@ +type DependencyTreeOptions = { + serverSide: boolean; + validate: boolean; + force: boolean; + forceConflicts: boolean; + recreate: boolean; + applyConcurrencyLimit: number; + surviveOnBrokenCluster: boolean; + applyTimeout: string; + customWaitableKinds: Kontinuous.Manifest["kind"][]; +}; + +type DependencyTreeContext = { + config: { + kubeconfigContext: string; + kubeconfig: string; + noValidate: boolean; + buildPath: string; + deploymentLabelKey: string; + }; + utils: Kontinuous.Utils; + manifests: Kontinuous.Manifests; + dryRun: boolean; + kubectl: Function; + rolloutStatus: Function; + ctx: { + require: (string) => any; + }; +}; diff --git a/plugins/contrib/deploy-with/kubectl-dependency-tree.js b/plugins/contrib/deploy-with/kubectl-dependency-tree.js index d2b5a6efcf..32637aebde 100644 --- a/plugins/contrib/deploy-with/kubectl-dependency-tree.js +++ b/plugins/contrib/deploy-with/kubectl-dependency-tree.js @@ -7,6 +7,11 @@ const kindIsWaitable = require("../lib/kind-is-waitable") const isNotDefined = (val) => val === undefined || val === null || val === "" const defaultTo = (val, defaultVal) => (isNotDefined(val) ? defaultVal : val) +/** + * + * @param {DependencyTreeOptions} options + * @param {DependencyTreeContext} context + */ module.exports = async (options, context) => { const { config, utils, manifests, dryRun, kubectl, rolloutStatus, ctx } = context @@ -178,7 +183,7 @@ module.exports = async (options, context) => { const yamlNeeds = annotations["kontinuous/plugin.needs"] - if (!kindIsWaitable(kind, options.customWaitableKinds)) { + if (!kindIsWaitable(manifest, options.customWaitableKinds)) { return } if (!yamlNeeds) { @@ -237,7 +242,7 @@ module.exports = async (options, context) => { } const countAllRunnable = manifests.filter((manifest) => - kindIsWaitable(manifest.kind, options.customWaitableKinds) + kindIsWaitable(manifest, options.customWaitableKinds) ).length eventsBucket.emit("deploy-with:plugin:initDeployment", { countAllRunnable }) diff --git a/plugins/contrib/deploy-with/kubectl.js b/plugins/contrib/deploy-with/kubectl.js index 73b26f8f91..85ce12f019 100644 --- a/plugins/contrib/deploy-with/kubectl.js +++ b/plugins/contrib/deploy-with/kubectl.js @@ -141,7 +141,7 @@ module.exports = async (options, context) => { const { ctx } = context const eventsBucket = ctx.require("eventsBucket") const countAllRunnable = manifests.filter((manifest) => - kindIsWaitable(manifest.kind, options.customWaitableKinds) + kindIsWaitable(manifest, options.customWaitableKinds) ).length eventsBucket.emit("deploy-with:plugin:initDeployment", { countAllRunnable }) diff --git a/plugins/contrib/lib/get-needs-deps.js b/plugins/contrib/lib/get-needs-deps.js index 69b124712b..fb48f1e2a2 100644 --- a/plugins/contrib/lib/get-needs-deps.js +++ b/plugins/contrib/lib/get-needs-deps.js @@ -1,14 +1,25 @@ const kindIsWaitable = require("./kind-is-waitable") const getChartNameTopParts = require("./get-chart-name-top-parts") -module.exports = (manifests, options, { config }) => { +/** + * + * @param {Kontinuous.Manifest[]} manifests + * @param {Kontinuous.Patch.Context} context + * @returns + */ +module.exports = (manifests, context) => { + const { config } = context + + /** @type {Record} */ const deps = {} for (const manifest of manifests) { const { kind, metadata } = manifest const annotations = metadata?.annotations - if (!annotations || !kindIsWaitable(kind, options.customWaitableKinds)) { + + if (!annotations || !kindIsWaitable(manifest)) { continue } + const lowerKind = kind.toLowerCase() const chartPath = annotations["kontinuous/chartPath"] @@ -25,6 +36,7 @@ module.exports = (manifests, options, { config }) => { } const chartName = chartPath.split(".").pop() + /** @type {string[]} */ const keys = [chartName, chartPath] for (const nameItem of names) { diff --git a/plugins/contrib/lib/kind-is-waitable.js b/plugins/contrib/lib/kind-is-waitable.js index 3a08b526fe..c7c38eea16 100644 --- a/plugins/contrib/lib/kind-is-waitable.js +++ b/plugins/contrib/lib/kind-is-waitable.js @@ -1,4 +1,11 @@ -const rolloutStatusHandledKinds = ["Deployment", "StatefulSet", "Job"] +const waitableKinds = ["Deployment", "StatefulSet", "Job"] -module.exports = (kind, customWaitableKinds = []) => - rolloutStatusHandledKinds.includes(kind) || customWaitableKinds.includes(kind) +/** + * + * @param {Kontinuous.Manifest} manifest + * @param {Kontinuous.Manifest["kind"][]} customWaitableKinds + * @returns {manifest is Kontinuous.WaitableManifest} + */ +module.exports = (manifest, customWaitableKinds = []) => + waitableKinds.includes(manifest.kind) || + customWaitableKinds.includes(manifest.kind) diff --git a/plugins/contrib/lib/rollout-status-manifests.js b/plugins/contrib/lib/rollout-status-manifests.js index 18345d6c31..6045241fb2 100644 --- a/plugins/contrib/lib/rollout-status-manifests.js +++ b/plugins/contrib/lib/rollout-status-manifests.js @@ -3,6 +3,12 @@ const kindIsWaitable = require("./kind-is-waitable") const waitBeforeStopAllRolloutStatus = 5000 // try to collect more errors if there is any +/** + * + * @param {Kontinuous.Patch.Context} context + * @param {{customWaitableKinds: Kontinuous.Manifest["kind"][]}} arg1 + * @returns + */ module.exports = async (context, { customWaitableKinds }) => { const { config, logger, rolloutStatus, utils, manifests, ctx, kubectl } = context diff --git a/plugins/contrib/package.json b/plugins/contrib/package.json index eaf0e7ed12..e0a4a1e566 100644 --- a/plugins/contrib/package.json +++ b/plugins/contrib/package.json @@ -21,7 +21,8 @@ "private": true, "packageManager": "yarn@4.0.0-rc.39", "devDependencies": { - "jest": "^29.3.1" + "jest": "^29.3.1", + "kubernetes-models": "^4.3.1" }, "resolutions": { "json5": "2.2.3" diff --git a/plugins/contrib/patches/00.0-values-patches.js b/plugins/contrib/patches/00.0-values-patches.js index 69acf57779..1e593fb7a3 100644 --- a/plugins/contrib/patches/00.0-values-patches.js +++ b/plugins/contrib/patches/00.0-values-patches.js @@ -1,11 +1,18 @@ const get = require("lodash.get") const set = require("lodash.set") +/** + * + * @param {Kontinuous.Manifest} manifest + * @param {[string, any]} match + * @returns boolean + */ const isMatching = (manifest, match) => { if (!match) { return true } for (const [key, value] of Object.entries(match)) { + // @ts-ignore if (manifest[key] !== value) { return false } @@ -15,6 +22,7 @@ const isMatching = (manifest, match) => { const specialFlags = ["chart"] +/** @type {Kontinuous.Patch.Function} */ module.exports = (manifests, _options, { values }) => { for (const manifest of manifests) { const chartPath = manifest.metadata?.annotations?.["kontinuous/chartPath"] diff --git a/plugins/contrib/patches/00.1-labels.js b/plugins/contrib/patches/00.1-labels.js index 245ebe5b26..6ab685533c 100644 --- a/plugins/contrib/patches/00.1-labels.js +++ b/plugins/contrib/patches/00.1-labels.js @@ -1,3 +1,4 @@ +/** @type {Kontinuous.Patch.Function} */ module.exports = (manifests, _options, { config, utils }) => { const { refLabelKey, @@ -10,6 +11,14 @@ module.exports = (manifests, _options, { config, utils }) => { const templateLabelKinds = utils.rolloutStatusHandledKinds + /** + * @param {Kontinuous.Manifest} manifest + * @returns {manifest is Kontinuous.ManifestWithTemplate} // typeguard to mark manifest + */ + function hasTemplateKind(manifest) { + return templateLabelKinds.includes(manifest.kind) + } + const { slug, isVersionTag, sanitizeLabel } = utils for (const manifest of manifests) { @@ -45,9 +54,11 @@ module.exports = (manifests, _options, { config, utils }) => { Object.assign(manifest.metadata.labels, labels) - if (templateLabelKinds.includes(kind)) { + if (hasTemplateKind(manifest)) { if (!manifest.spec) { - manifest.spec = {} + manifest.spec = { + template: {}, + } } if (!manifest.spec.template) { manifest.spec.template = {} @@ -61,6 +72,5 @@ module.exports = (manifests, _options, { config, utils }) => { Object.assign(manifest.spec.template.metadata.labels, labels) } } - return manifests } diff --git a/plugins/contrib/patches/00.2-annotations.js b/plugins/contrib/patches/00.2-annotations.js index a7e79881d9..41d24140de 100644 --- a/plugins/contrib/patches/00.2-annotations.js +++ b/plugins/contrib/patches/00.2-annotations.js @@ -1,10 +1,19 @@ +/** @type {Kontinuous.Patch.Function} */ module.exports = (manifests, _options, { config, utils }) => { const { deploymentLabelKey, deploymentLabelValue } = config const templateLabelKinds = utils.rolloutStatusHandledKinds + /** + * @param {Kontinuous.Manifest} manifest + * @returns {manifest is Kontinuous.ManifestWithTemplate} // typeguard to mark manifest + */ + function hasTemplateKind(manifest) { + return templateLabelKinds.includes(manifest.kind) + } + for (const manifest of manifests) { - const { kind, apiVersion } = manifest + const { apiVersion } = manifest if (apiVersion?.startsWith("kapp.k14s.io")) { continue @@ -23,9 +32,11 @@ module.exports = (manifests, _options, { config, utils }) => { Object.assign(manifest.metadata.annotations, annotations) - if (templateLabelKinds.includes(kind)) { + if (hasTemplateKind(manifest)) { if (!manifest.spec) { - manifest.spec = {} + manifest.spec = { + template: {}, + } } if (!manifest.spec.template) { manifest.spec.template = {} diff --git a/plugins/contrib/patches/01-namespace.js b/plugins/contrib/patches/01-namespace.js index d04dd44aa6..2c60abc995 100644 --- a/plugins/contrib/patches/01-namespace.js +++ b/plugins/contrib/patches/01-namespace.js @@ -1,6 +1,11 @@ const defaultOptions = { overrideDefault: true, } + +/** + * @type {Kontinuous.Patch.Function} + * @param {Kontinuous.Patch.NamespaceOptions} options + */ module.exports = (manifests, options, { values }) => { const opts = { ...defaultOptions, ...options } const { overrideDefault } = opts diff --git a/plugins/contrib/patches/02-kapp.js b/plugins/contrib/patches/02-kapp.js index 173a5fbb9f..eae96d3327 100644 --- a/plugins/contrib/patches/02-kapp.js +++ b/plugins/contrib/patches/02-kapp.js @@ -10,35 +10,40 @@ const kappAnnotationsPod = { } const kindPatches = { + /** @param {Deployment} manifest */ Deployment: (manifest) => { Object.assign( - manifest.metadata.annotations, + manifest.metadata?.annotations || {}, kappStrategyAnnotations, kappAnnotationsPod ) }, + /** @param {Job} manifest */ Job: (manifest) => { Object.assign( - manifest.metadata.annotations, + manifest.metadata?.annotations || {}, kappStrategyAnnotations, kappAnnotationsPod ) }, + /** @param {CronJob} manifest */ CronJob: (manifest) => { Object.assign( - manifest.metadata.annotations, + manifest.metadata?.annotations || {}, kappStrategyAnnotations, kappAnnotationsPod ) }, + /** @param {Service} manifest */ Service: (manifest) => { - Object.assign(manifest.metadata.annotations, { + Object.assign(manifest.metadata?.annotations || {}, { "kapp.k14s.io/disable-default-ownership-label-rules": "", "kapp.k14s.io/disable-default-label-scoping-rules": "", }) }, } +/** @type {Kontinuous.Patch.Function} */ module.exports = (manifests) => { for (const manifest of manifests) { const { kind, apiVersion } = manifest @@ -54,7 +59,9 @@ module.exports = (manifests) => { if (kind !== "Namespace") { manifest.metadata.annotations["kapp.k14s.io/disable-original"] = "" } + // @ts-ignore todo if (kindPatches[kind]) { + // @ts-ignore todo kindPatches[kind](manifest) } } diff --git a/plugins/contrib/patches/03-dns-truncate.js b/plugins/contrib/patches/03-dns-truncate.js index fe1da05994..94ad0ad8be 100644 --- a/plugins/contrib/patches/03-dns-truncate.js +++ b/plugins/contrib/patches/03-dns-truncate.js @@ -1,9 +1,9 @@ const MAX_DNS_LENGTH = 63 +/** @type {Kontinuous.Patch.Function} */ module.exports = (manifests, _options, context) => { const { utils } = context const { yaml, slug, logger } = utils - let subdomainsToTruncate = [] do { subdomainsToTruncate = [] @@ -13,6 +13,7 @@ module.exports = (manifests, _options, context) => { } const rules = manifest.spec?.rules || [] for (const { host } of rules) { + console.log("host", host) const domainParts = host.split(".") for (const subdomain of domainParts) { if (subdomain.length > MAX_DNS_LENGTH) { diff --git a/plugins/contrib/patches/04-on-changed.js b/plugins/contrib/patches/04-on-changed.js index ee4562ef83..430299c6bd 100644 --- a/plugins/contrib/patches/04-on-changed.js +++ b/plugins/contrib/patches/04-on-changed.js @@ -3,9 +3,14 @@ const changeGroupPrefix = "kapp.k14s.io/change-group" const changeGroupValuePrefix = "kontinuous/" const changeRuleValuePrefix = "upsert after upserting kontinuous/" +/** + * + * @param {Kontinuous.Manifest} manifest + * @returns Set + */ const getChangeGroupOf = (manifest) => { const changeGroups = new Set() - for (const [key, group] of Object.entries(manifest.metadata.annotations)) { + for (const [key, group] of Object.entries(manifest.metadata?.annotations)) { if (key === changeGroupPrefix || key.startsWith(`${changeGroupPrefix}.`)) { changeGroups.add(group.slice(changeGroupValuePrefix.length)) } @@ -13,9 +18,14 @@ const getChangeGroupOf = (manifest) => { return changeGroups } +/** + * @param {Kontinuous.Manifests} manifests + * @param {Set} changeGroups + * @returns Kontinuous.Manifests + */ const findDependentsOfGroup = (manifests, changeGroups) => manifests.filter((manifest) => { - for (const [key, rule] of Object.entries(manifest.metadata.annotations)) { + for (const [key, rule] of Object.entries(manifest.metadata?.annotations)) { if ( (key === changeRulePrefix || key.startsWith(`${changeRulePrefix}.`)) && rule.startsWith(changeRuleValuePrefix) @@ -27,16 +37,25 @@ const findDependentsOfGroup = (manifests, changeGroups) => return false }) +/** + * @param {Kontinuous.Manifests} manifests + * @param {Kontinuous.Manifest} neededManifest + * @returns Kontinuous.Manifests + */ const findDependentsOf = (manifests, neededManifest) => { const changeGroups = getChangeGroupOf(neededManifest) return findDependentsOfGroup(manifests, changeGroups) } - +/** + * @param {Kontinuous.Manifests} manifests + * @param {Kontinuous.Manifest} neededManifest + * @returns {void} + */ const unbindDependentsOf = (manifests, neededManifest) => { const changeGroups = getChangeGroupOf(neededManifest) const manifestToUnbind = findDependentsOfGroup(manifests, changeGroups) for (const manifest of manifestToUnbind) { - const { annotations } = manifest.metadata + const { annotations = {} } = manifest.metadata || {} for (const [key, rule] of Object.entries(annotations)) { if ( (key === changeRulePrefix || key.startsWith(`${changeRulePrefix}.`)) && @@ -51,6 +70,13 @@ const unbindDependentsOf = (manifests, neededManifest) => { } } +/** + * + * @param {Kontinuous.Manifests} manifests + * @param {*} neededManifest + * @param {*} removeManifests + * @returns + */ const removeDependentsOf = ( manifests, neededManifest, @@ -63,7 +89,8 @@ const removeDependentsOf = ( return removeManifests } -module.exports = async (manifests, _options, context) => { +/** @type {Kontinuous.Patch.Function} */ +module.exports = (manifests, _options, context) => { const { config, utils } = context const { yaml, KontinuousPluginError, patternMatch } = utils const { changedPaths } = config diff --git a/plugins/contrib/patches/05.0-needs.js b/plugins/contrib/patches/05.0-needs.js index 17111c901d..491fa1b1ab 100644 --- a/plugins/contrib/patches/05.0-needs.js +++ b/plugins/contrib/patches/05.0-needs.js @@ -1,25 +1,23 @@ -const kindIsWaitable = require("../lib/kind-is-waitable") const getChartNameTopParts = require("../lib/get-chart-name-top-parts") -module.exports = async (manifests, options, { config }) => { +/** @type {Kontinuous.Patch.Function} */ +module.exports = (manifests, options, { utils, config }) => { + const { kindIsWaitable } = utils for (const manifest of manifests) { - const { kind } = manifest - if (!kindIsWaitable(kind, options.customWaitableKinds)) { + const { kind, metadata } = manifest + const annotations = metadata?.annotations + if (!annotations || !kindIsWaitable(manifest)) { continue } if (!manifest.metadata) { manifest.metadata = {} } - const { metadata } = manifest - if (!metadata.annotations) { - metadata.annotations = {} - } - const { annotations } = metadata const chartPath = annotations["kontinuous/chartPath"] const { name } = metadata const chartName = chartPath.split(".").pop() + // @ts-ignore TODO const lowerKind = kind.toLowerCase() annotations["kontinuous/depname.full"] = `${chartPath}.${lowerKind}.${name}` annotations[ diff --git a/plugins/contrib/patches/06-filter-disable-kapp.js b/plugins/contrib/patches/06-filter-disable-kapp.js index 9adc68d385..0075ef7393 100644 --- a/plugins/contrib/patches/06-filter-disable-kapp.js +++ b/plugins/contrib/patches/06-filter-disable-kapp.js @@ -1,2 +1,3 @@ +/** @type {Kontinuous.PatchFunction} */ module.exports = async (manifests, _options, _context) => manifests.filter((m) => m.kind !== "Config") diff --git a/plugins/contrib/patches/06-helm.js b/plugins/contrib/patches/06-helm.js index 860b6bcad3..f4a587c8b1 100644 --- a/plugins/contrib/patches/06-helm.js +++ b/plugins/contrib/patches/06-helm.js @@ -1,4 +1,5 @@ -module.exports = async (manifests, _options, context) => { +/** @type {Kontinuous.Patch.Function} */ +module.exports = (manifests, _options, context) => { const { config, utils } = context const { slug } = utils const { repositoryName, ciNamespace } = config diff --git a/plugins/contrib/patches/10-sort.js b/plugins/contrib/patches/10-sort.js index 4dbbc2e303..fb5b12b2cd 100644 --- a/plugins/contrib/patches/10-sort.js +++ b/plugins/contrib/patches/10-sort.js @@ -14,6 +14,8 @@ const order = [ "daemonset", "service", ] + +/** @type {Kontinuous.PatchFunction} */ module.exports = async (manifests, _options, _context) => manifests.sort((a, b) => { const indexA = order.indexOf(a.kind.toLowerCase()) diff --git a/plugins/contrib/patches/30-janitor.js b/plugins/contrib/patches/30-janitor.js index e270a616f5..08d92befc4 100644 --- a/plugins/contrib/patches/30-janitor.js +++ b/plugins/contrib/patches/30-janitor.js @@ -1,9 +1,17 @@ const { persistPatterns } = require("../lib/persist-convention") -module.exports = (manifests, options, { config, values, utils }) => { +/** + * Takes any object with a name prop and removes it + * @param {Kontinuous.Manifest[]} manifests + * @param {object} options + * @param {{config:object, values:object, utils:Utils, ctx?:object}} param2 + * @returns {Kontinuous.Manifest[]} + */ +module.exports = (manifests, options, { config, values, utils, ctx }) => { if (config.environment !== "dev") { return manifests } + ctx.pou = "poue" const { permanentDevEnvironmentBranches = [ diff --git a/plugins/contrib/patches/log.js b/plugins/contrib/patches/log.js index d4613c4141..9714abbabd 100644 --- a/plugins/contrib/patches/log.js +++ b/plugins/contrib/patches/log.js @@ -14,7 +14,7 @@ module.exports = async (manifests, options) => { const pluginLog = manifest.metadata?.annotations?.["kontinuous/plugin.log"] const { kind } = manifest - if (!kindIsWaitable(kind, options.customWaitableKinds)) { + if (!kindIsWaitable(manifest, options.customWaitableKinds)) { if (pluginLog !== undefined) { delete manifest.metadata.annotations["kontinuous/plugin.log"] } diff --git a/plugins/contrib/patches/rancher-project-id.js b/plugins/contrib/patches/rancher-project-id.js index bc7e9fd93a..14995ddbee 100644 --- a/plugins/contrib/patches/rancher-project-id.js +++ b/plugins/contrib/patches/rancher-project-id.js @@ -1,3 +1,7 @@ +/** + * @type {Kontinuous.PatchFunction} + * @param {Kontinuous.PatchRancheProjectIdOptions} options + */ module.exports = async (manifests, options, { config, logger, kubectl }) => { const { ciNamespace, kubeconfig, kubeconfigContext } = config @@ -15,14 +19,14 @@ module.exports = async (manifests, options, { config, logger, kubectl }) => { } if (rancherNsMissingProjectId.length === 0) { - return + return manifests } if (!ciNamespace) { logger.warn( `♉ missing rancher projectId not provided, unable to retrieve it as ci-namespace is not defined` ) - return + return manifests } const { surviveOnBrokenCluster = false } = options @@ -59,7 +63,15 @@ module.exports = async (manifests, options, { config, logger, kubectl }) => { } for (const manifest of rancherNsMissingProjectId) { + if (!manifest.metadata) { + manifest.metadata = {} + } + if (!manifest.metadata?.annotations) { + manifest.metadata.annotations = {} + } manifest.metadata.annotations["field.cattle.io/projectId"] = rancherProjectId } + + return manifests } diff --git a/plugins/contrib/patches/reloader.js b/plugins/contrib/patches/reloader.js index 3f99fb8574..da1ea6fc1d 100644 --- a/plugins/contrib/patches/reloader.js +++ b/plugins/contrib/patches/reloader.js @@ -1,5 +1,9 @@ const deploymentModeEnum = [false, "auto", "search"] +/** + * @type {Kontinuous.PatchFunction} + * @param {Kontinuous.PatchReloaderOptions} options + */ module.exports = (manifests, options, { utils }) => { const { KontinuousPluginError } = utils const { deploymentMode = "auto" } = options diff --git a/plugins/contrib/patches/tests/janitor.test.js b/plugins/contrib/patches/tests/janitor.test.js index 73f4be97ae..f8899dab83 100644 --- a/plugins/contrib/patches/tests/janitor.test.js +++ b/plugins/contrib/patches/tests/janitor.test.js @@ -9,8 +9,11 @@ metadata: const runJanitor = async (config, values) => { const ctx = require("~common/ctx") - const utils = require("~common/utils") + // warn: JSDOC weird cast notation + const utils = /** @type {import("~common/utils")} */ ( + /** @type {unknown} */ (require("~common/utils")) + ) const manifests = utils.yaml.loadAll(rawNs) const { logger } = utils logger.minLevel("debug") diff --git a/plugins/contrib/post-deploy/notify-mattermost.js b/plugins/contrib/post-deploy/notify-mattermost.js index f166db542a..06c237ddc8 100644 --- a/plugins/contrib/post-deploy/notify-mattermost.js +++ b/plugins/contrib/post-deploy/notify-mattermost.js @@ -46,6 +46,7 @@ module.exports = async (manifests, options, context) => { } } else { deploymentMessage.push( + // @ts-ignore new AggregateError(errors, "errors encountered during deployment").message ) // if we're running through GitHub actions diff --git a/plugins/contrib/values-compilers/06-global-defaults.js b/plugins/contrib/values-compilers/06-global-defaults.js index 593ce4ba78..8314017288 100644 --- a/plugins/contrib/values-compilers/06-global-defaults.js +++ b/plugins/contrib/values-compilers/06-global-defaults.js @@ -1,6 +1,7 @@ const { persistPatterns } = require("../lib/persist-convention") module.exports = async (values, options, { config, utils, ctx }) => { + console.log("GLOBAL") const { isVersionTag, slug, deepmerge, patternMatch } = utils const processEnv = ctx.get("env") || process.env diff --git a/plugins/contrib/values-compilers/09-maildev-schema.d.ts b/plugins/contrib/values-compilers/09-maildev-schema.d.ts new file mode 100644 index 0000000000..502205124d --- /dev/null +++ b/plugins/contrib/values-compilers/09-maildev-schema.d.ts @@ -0,0 +1,91 @@ +export type DestinationNamespace = string | null; +export type DefaultHostname = string | null; +export type ServicePort = ServicePort1 & ServicePort2; +export type ServicePort1 = number; +export type ServicePort2 = string; +export type IngressSSLCertName = string | null; +export type HelmRepositoryName = string | null; +export type NumberOfReplicas = NumberOfReplicas1 & NumberOfReplicas2; +export type NumberOfReplicas1 = number; +export type NumberOfReplicas2 = string; +export type ExtraStartupArguments = unknown[]; +/** + * To clean some old mails when persistence is enabled + */ +export type EnableCronCleanups = boolean | null; +export type CleanupSchedule = string; +export type Retention = Retention1 & Retention2; +export type Retention1 = number; +export type Retention2 = string; +export type EnableIngress = EnableIngress1 & EnableIngress2; +export type EnableIngress1 = boolean; +export type EnableIngress2 = string; + +// helm schema +export interface MailDevSchema { + namespace?: DestinationNamespace; + host?: DefaultHostname; + servicePort?: ServicePort; + certSecretName?: IngressSSLCertName; + repositoryName?: HelmRepositoryName; + replicaCount?: NumberOfReplicas; + image?: DockerImage; + extraArgs?: ExtraStartupArguments; + persistence?: PersistenceConfig; + /** + * To clean some old mails when persistence is enabled + */ + cron?: { + enabled?: boolean | null; + image?: DockerImage1; + schedule?: CleanupSchedule; + daysToKeep?: Retention; + [k: string]: unknown; + }; + ingress?: { + enabled?: EnableIngress; + annotations?: IngressAnnotation; + [k: string]: unknown; + }; + resources?: CPUMemoryResourceRequestsLimits; +} +export interface DockerImage { + repository?: string; + pullPolicy?: string; + tag?: string; +} +export interface PersistenceConfig { + enabled?: boolean | null; + accessMode?: string; + size?: string; + storageClass?: string; + existingClaim?: string; + mountPath?: string; +} +export interface DockerImage1 { + repository?: string; + pullPolicy?: string; + tag?: string; +} +export interface IngressAnnotation { + // TODO : use json-schema / nginx + [k: string]: unknown; +} +/** + * ResourceRequirements describes the compute resource requirements. + */ +export interface CPUMemoryResourceRequestsLimits { + /** + * Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + */ + limits?: { + [k: string]: string | number; + }; + /** + * Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + */ + requests?: { + [k: string]: string | number; + }; + [k: string]: unknown; +} diff --git a/plugins/contrib/values-compilers/09-maildev.d.ts b/plugins/contrib/values-compilers/09-maildev.d.ts new file mode 100644 index 0000000000..6ab3a48814 --- /dev/null +++ b/plugins/contrib/values-compilers/09-maildev.d.ts @@ -0,0 +1,47 @@ +import { ObjectMeta } from "@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta"; +import type { MailDevSchema } from "./09-maildev-schema"; +//export * from "./09-maildev-schema"; + +export type ValuesPlugin = Record; + +type Course = "Computer Science" | "Mathematics" | "Literature"; + +interface CourseInfo { + professor: string; + cfu: number; +} + +// todo: export as JSON schema for values.yaml completion +export type MailDevComponent = { + persistence: { enabled: boolean }; + host: string; + ingress: { + annotations: ObjectMeta["annotations"]; // TODO: import chart from json-schemas nginx schema + }; + ["~chart"]: string; + maildev: MailDevSchema; // todo: import chart from helm-charts schema +}; + +export type MailDevValues = { + global: { + env: { + preprod: boolean; + prod: boolean; + dev: boolean; + }; + host: string; + repositoryName: string; + ingress: { + // todo: use https://github.com/SocialGouv/json-schemas/blob/main/nginx/annotations.schema.json + // needs npm publication + annotations: ObjectMeta["annotations"]; + }; + }; + project: ValuesPlugin; +}; + +export type MailDevParams = { + config: any; + utils: keyof Kontinuous.Utils; + ctx: any; +}; diff --git a/plugins/contrib/values-compilers/09-maildev.js b/plugins/contrib/values-compilers/09-maildev.js new file mode 100644 index 0000000000..b6f106da67 --- /dev/null +++ b/plugins/contrib/values-compilers/09-maildev.js @@ -0,0 +1,65 @@ +// @ts-check + +/** + * @param {object} component + * @return {component is import("./09-maildev").MailDevComponent} + */ +function isMaildevComponent(component) { + return component[`~chart`]?.endsWith(".contrib.maildev") +} + +/** + * + * @param {import("./09-maildev").ValuesPlugin} values + */ +function extractMaildevComponents(values, acc = []) { + Object.entries(values).forEach(([key, component]) => { + if (typeof component === "object" && component !== null) { + extractMaildevComponents(component, acc) + if (component._isChartValues && isMaildevComponent(component)) { + acc.push([key, component]) + } + } + }) + return acc +} +/** + * + * @param {import("./09-maildev").MailDevValues} values + * @param {*} _options + * @param {import("./09-maildev").MailDevParams} param2 + * @returns + */ +const maildev = async (values, _options, { _config, utils, _ctx }) => { + console.log("maildev", values) + const { deepmerge } = utils + + const components = extractMaildevComponents(values) + + components.forEach(([key, component]) => { + const persistenceEnabled = + component.persistence.enabled !== null + ? component.persistence.enabled + : !!values.global.env.preprod + + /** @type {import("./09-maildev-schema").MailDevSchema} */ + const maildevValues = { + host: component.host || `${key}-${values.global.host}`, + repositoryName: values.global.repositoryName, + ingress: { + annotations: values.global.ingress.annotations, + }, + persistence: { + enabled: persistenceEnabled, + }, + cron: { + enabled: persistenceEnabled, + }, + } + + deepmerge(component, maildevValues) + }) +} + +// @ts-ignore +module.exports = maildev diff --git a/plugins/contrib/values-compilers/10-tpl-meta-values.js b/plugins/contrib/values-compilers/10-tpl-meta-values.js index 1e995a6c4b..6af4a49134 100644 --- a/plugins/contrib/values-compilers/10-tpl-meta-values.js +++ b/plugins/contrib/values-compilers/10-tpl-meta-values.js @@ -50,7 +50,7 @@ const renderTplRecurse = async ( } value = yaml.loadValue(value) if (isTplCast) { - const cast = prefix.slice(1, -1).split(":").slice(1) + const cast = prefix.slice(1, -1).split(":").slice(1).join("") switch (true) { case cast === "int" || cast === "integer": { value = parseInt(value, 10) diff --git a/plugins/contrib/values-compilers/outputs.js.bak b/plugins/contrib/values-compilers/outputs.js.bak deleted file mode 100644 index a9e6cf087c..0000000000 --- a/plugins/contrib/values-compilers/outputs.js.bak +++ /dev/null @@ -1,24 +0,0 @@ -const camelcase = require("lodash.camelcase") -const defaultsDeep = require("lodash.defaultsdeep") - -module.exports = async (values) => { - const outputs = {} - for (const key of Object.keys(values)) { - if (key === "jobs" || key.startsWith("jobs-")) { - for (const run of values[key].runs || []) { - for (const name of run.scopes) { - const ccName = camelcase(name) - outputs[ccName] = `"$(cat "/workflow/vars/${name}/%s")"` - } - } - } - } - defaultsDeep(values, { - global: { - extra: { - jobs: {}, - }, - }, - }) - values.global.extra.jobs.outputs = outputs -} diff --git a/plugins/contrib/yarn.lock b/plugins/contrib/yarn.lock index e784e409e8..958b17cb41 100644 --- a/plugins/contrib/yarn.lock +++ b/plugins/contrib/yarn.lock @@ -719,6 +719,40 @@ __metadata: languageName: node linkType: hard +"@kubernetes-models/apimachinery@npm:^1.2.1": + version: 1.2.1 + resolution: "@kubernetes-models/apimachinery@npm:1.2.1" + dependencies: + "@kubernetes-models/base": "npm:^4.0.3" + "@kubernetes-models/validate": "npm:^3.1.1" + tslib: "npm:^2.4.0" + checksum: 63fe0c66978bedae88bb2b9f96040dd99ec73c51c49dfa20b04f0468674b59192d24198fdecc0f9a7f356a805985eae93a87ecb29c749fe1566171710627d087 + languageName: node + linkType: hard + +"@kubernetes-models/base@npm:^4.0.3": + version: 4.0.3 + resolution: "@kubernetes-models/base@npm:4.0.3" + dependencies: + "@kubernetes-models/validate": "npm:^3.1.1" + is-plain-object: "npm:^5.0.0" + tslib: "npm:^2.4.0" + checksum: c3059e03590c0c63c8e4af490266b8650178b145010f75ed7914b5e346e06fa9a6b0cfbc57b69223a4aeda52887e03c7ad49208fbd0db77450b1e326d7deb54b + languageName: node + linkType: hard + +"@kubernetes-models/validate@npm:^3.1.1": + version: 3.1.1 + resolution: "@kubernetes-models/validate@npm:3.1.1" + dependencies: + ajv: "npm:^8.12.0" + ajv-formats: "npm:^2.1.1" + ajv-formats-draft2019: "npm:^1.6.1" + tslib: "npm:^2.4.0" + checksum: 2455c2f31013029b7f8b1dd9720f95c49037c19b1c34d7e105e47dc366b82907704f4d85e32892e514dbbdfdca7c8955d454fd4d439d4acee94a8d650297c71a + languageName: node + linkType: hard + "@npmcli/fs@npm:^2.1.0": version: 2.1.2 resolution: "@npmcli/fs@npm:2.1.2" @@ -920,6 +954,46 @@ __metadata: languageName: node linkType: hard +"ajv-formats-draft2019@npm:^1.6.1": + version: 1.6.1 + resolution: "ajv-formats-draft2019@npm:1.6.1" + dependencies: + punycode: "npm:^2.1.1" + schemes: "npm:^1.4.0" + smtp-address-parser: "npm:^1.0.3" + uri-js: "npm:^4.4.1" + peerDependencies: + ajv: "*" + checksum: aaac64afe3b727b1bf945ef3bd72f0846b4ade9880928788cfce8561d50a1c4326e1172b477f62633fb1842945704a07af805c11a7b254751475fadfd6c171ce + languageName: node + linkType: hard + +"ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: e5f81767fea58d19fd3b90cdbe09036f25d7fab103ffcba684eb4a4bd8b4181c06494a0324c768f409dc3c9643d91382e6e6a16e577396369a281ac39f18207f + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.12.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.2.2" + checksum: adab5a15cfce05aa97767b5f01da510f79f351021c643b5593b001dc5063aac3822d9265da94f7e39fd32cc4054277e43728aa522f83d82daca50858a5c29361 + languageName: node + linkType: hard + "ansi-escapes@npm:^4.2.1": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" @@ -1330,6 +1404,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^2.19.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: a6cb7ce73cc1db74a2da4bb6b4fc4f9a655ba35beb90f32bf5831d7d3be610dafc01dcc8a17f8204cf4e3f1f434d2115b7db56dfb0b827d42b10d1ba6ae8cbb4 + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -1423,6 +1504,13 @@ __metadata: languageName: node linkType: hard +"discontinuous-range@npm:1.0.0": + version: 1.0.0 + resolution: "discontinuous-range@npm:1.0.0" + checksum: 85786395546622dae3111890803112c3dd8dc1981a8a5b9632374d49aa7707eac6d709a1fc5fd1d1ba96b9be9c53bdd14ee8143cdf406f2a7182d95b68ba56f9 + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.4.284": version: 1.4.313 resolution: "electron-to-chromium@npm:1.4.313" @@ -1544,6 +1632,20 @@ __metadata: languageName: node linkType: hard +"extend@npm:^3.0.0": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: 312babdc3cfd8d5d003b109f02b8b639e8bdf2262f2f06acebfc3c991d8c004b73c2c10eaaaab00cfb2fb2a760845006806af10945b279d9390eed064505dfdb + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 5f83fabf1f0bac0df5117e881ee15756dc8a9ee48c8020ed63cb84a7935d78c338dc0982b3b7b6ad0792905f5ef0c35293db9cae2f3208a6f09071c43887a02f + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -1908,6 +2010,13 @@ __metadata: languageName: node linkType: hard +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: fd152d0cadce30fc41b1294e5e63a6bc696a82102828d77e63cf9eb01510c011c9c2ca432babb372356ac24ec164427ecf0c9633a4ea044b4de18d92be013700 + languageName: node + linkType: hard + "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -2451,6 +2560,13 @@ __metadata: languageName: node linkType: hard +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 3da4fc677cfedd1745cce0c1acefebcf508c9cfa8d202ae394e38d31acbb398aea24da8e4959d5f9e44b12ebaa963bb4e4f7c25804e17484b3bfbc00519c58ca + languageName: node + linkType: hard + "json5@npm:2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" @@ -2480,6 +2596,18 @@ __metadata: languageName: node linkType: hard +"kubernetes-models@npm:^4.3.1": + version: 4.3.1 + resolution: "kubernetes-models@npm:4.3.1" + dependencies: + "@kubernetes-models/apimachinery": "npm:^1.2.1" + "@kubernetes-models/base": "npm:^4.0.3" + "@kubernetes-models/validate": "npm:^3.1.1" + tslib: "npm:^2.4.0" + checksum: e1d3fa0db4d95faa18ddd46fba0a26ddfba1607c16e588d22359f000b699578b8e9b27ac06555234d7370187f8792e9ad2cb7bd65b9513face2ba0559c2fdcc5 + languageName: node + linkType: hard + "kubernetes-resource-parser@npm:^0.1.0": version: 0.1.0 resolution: "kubernetes-resource-parser@npm:0.1.0" @@ -2761,6 +2889,13 @@ __metadata: languageName: node linkType: hard +"moo@npm:^0.5.0": + version: 0.5.2 + resolution: "moo@npm:0.5.2" + checksum: 7e242e222112e74ce8e8d7eb879ba22966fcaf2b45884c71111287e600220101f5f8f55c606f36f6b8aed1080f9d05618f26f5e0c879a534dd3f803037b20702 + languageName: node + linkType: hard + "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -2782,6 +2917,23 @@ __metadata: languageName: node linkType: hard +"nearley@npm:^2.20.1": + version: 2.20.1 + resolution: "nearley@npm:2.20.1" + dependencies: + commander: "npm:^2.19.0" + moo: "npm:^0.5.0" + railroad-diagrams: "npm:^1.0.0" + randexp: "npm:0.4.6" + bin: + nearley-railroad: bin/nearley-railroad.js + nearley-test: bin/nearley-test.js + nearley-unparse: bin/nearley-unparse.js + nearleyc: bin/nearleyc.js + checksum: 71aa9a1288329a575a7eeb0bba8e3f927357cb7edecd66c18fb6cbece09bf520bd93256eed7969225db10e3dc32aa9378555898639038cb5cc1793d624b5f907 + languageName: node + linkType: hard + "negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" @@ -3031,6 +3183,30 @@ __metadata: languageName: node linkType: hard +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 860ab215e7c40a5cd5e8b4f7abe3c860832f26f2b1b3b95a24e45a3771403ef5d2f4248517380bd15aa3dce06fae3aae92080363cd48713f1230cb659d9f8b74 + languageName: node + linkType: hard + +"railroad-diagrams@npm:^1.0.0": + version: 1.0.0 + resolution: "railroad-diagrams@npm:1.0.0" + checksum: 9bc31c8ce428f2ae887430de4bafc7b78d552fd8795d5de51e7aeb38a18fb99918b378792eda2c3eb053431d9d618cfb425eacda251f11a5707b5da115dd5d93 + languageName: node + linkType: hard + +"randexp@npm:0.4.6": + version: 0.4.6 + resolution: "randexp@npm:0.4.6" + dependencies: + discontinuous-range: "npm:1.0.0" + ret: "npm:~0.1.10" + checksum: feacb1d577914ad13c672942e2f45699aa1ce0c06dd0efb22d7254ebb32c8eb7c31cc01b557003c0552e6455433f098b128a126e87326ef4c0c8a28f478ae74e + languageName: node + linkType: hard + "react-is@npm:^18.0.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" @@ -3056,6 +3232,13 @@ __metadata: languageName: node linkType: hard +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 3cd7be0f2b19d49ef2ec59c27cc9dbd64343c950c744651d8e31651026585d5da581df35be7a9b825f00921bf134d619fea292360dabbae11da2c211f2b601f2 + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -3105,6 +3288,13 @@ __metadata: languageName: node linkType: hard +"ret@npm:~0.1.10": + version: 0.1.15 + resolution: "ret@npm:0.1.15" + checksum: d65bd0cc83122e33a284e87ff9b51f553e5da3d05b0643740a0c07189f6025972a70856e794bdae3d8cdfb36bc8c05a3aad3935bdadbd20bdaa1789b70a21e8c + languageName: node + linkType: hard + "retry@npm:0.13.1": version: 0.13.1 resolution: "retry@npm:0.13.1" @@ -3144,6 +3334,15 @@ __metadata: languageName: node linkType: hard +"schemes@npm:^1.4.0": + version: 1.4.0 + resolution: "schemes@npm:1.4.0" + dependencies: + extend: "npm:^3.0.0" + checksum: 3f544b51db85dee01f504e9a7d82868375d66a227dc9f951a8f37b2f9036a6730f29c03bf4ad4e5cd4d813d050dcba5e0b66bc73ddc3360bac06562dadb29a50 + languageName: node + linkType: hard + "semver@npm:^6.0.0, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" @@ -3226,6 +3425,15 @@ __metadata: languageName: node linkType: hard +"smtp-address-parser@npm:^1.0.3": + version: 1.0.10 + resolution: "smtp-address-parser@npm:1.0.10" + dependencies: + nearley: "npm:^2.20.1" + checksum: 2bf31e34e29ab0091c76387a819069e5d86979071321a7cecdfe51f384b1c8e824c62a0cfefdaed831b97b6b7b9fdddf72a0ebb01eb56664abf68909ea2b5936 + languageName: node + linkType: hard + "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -3431,6 +3639,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.4.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: e5654691294dfbc49d7f37c8476b11a90ab8a0af4ad8cc968af1d013600e84ecfcd9a68e1cb89f5dcfe5c88872e3fbacea830d237cfa063498115a88f4bd2de6 + languageName: node + linkType: hard + "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -3484,6 +3699,15 @@ __metadata: languageName: node linkType: hard +"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 284fedd1b11512a77e783bfd32b320a9af1f2e39fbfabf4d65d64122344a3f55b8d37ec0c77e0045f7467b99d24bd2c067c1224d74f5c76b069753c7276d8709 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -3617,6 +3841,7 @@ __metadata: async-retry: "npm:^1.3.3" fs-extra: "npm:^11.1.1" jest: "npm:^29.3.1" + kubernetes-models: "npm:^4.3.1" kubernetes-resource-parser: "npm:^0.1.0" lodash.camelcase: "npm:^4.3.0" lodash.clonedeep: "npm:^4.5.0" diff --git a/plugins/fabrique/Chart.yaml b/plugins/fabrique/Chart.yaml index e92b58b693..54ddb283c8 100644 --- a/plugins/fabrique/Chart.yaml +++ b/plugins/fabrique/Chart.yaml @@ -14,10 +14,6 @@ dependencies: repository: file://./charts/pgweb version: 1.168.9 condition: pgweb.enabled - - name: maildev - repository: file://./charts/maildev - version: 1.168.9 - condition: maildev.enabled - name: keycloakx repository: https://codecentric.github.io/helm-charts version: 2.1.1 diff --git a/plugins/fabrique/charts/maildev/Chart.yaml b/plugins/fabrique/charts/maildev/Chart.yaml deleted file mode 100644 index 7ce07e5da5..0000000000 --- a/plugins/fabrique/charts/maildev/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: maildev -version: 1.136.3 -dependencies: - - name: maildev - degit: socialgouv/helm-charts/charts/maildev@v1 - condition: maildev.enabled - version: "1" \ No newline at end of file diff --git a/plugins/fabrique/charts/maildev/values.yaml b/plugins/fabrique/charts/maildev/values.yaml deleted file mode 100644 index efb7039fbc..0000000000 --- a/plugins/fabrique/charts/maildev/values.yaml +++ /dev/null @@ -1,10 +0,0 @@ -maildev: - enabled: true - ~tpl~host: '{{ tpl (or .Values.host (print (or .Values.component (index .Values.kontinuous.chartContext 2)) "-" (or .Values.global.host ""))) $ }}' - ~tpl~repositoryName: "{{ .Values.global.repositoryName }}" - ingress: - ~tpl~annotations: "{{ .Values.global.ingress.annotations | toJson }}" - persistence: - ~tpl~enabled: "{{ if (eq .Values.global.env `preprod`) }}true{{ else }}false{{ end }}" - cron: - ~tpl~enabled: "{{ if (eq .Values.global.env `preprod`) }}true{{ else }}false{{ end }}" \ No newline at end of file diff --git a/plugins/fabrique/values-compilers/index.js b/plugins/fabrique/values-compilers/index.js index acc01d1414..fb650abc2e 100644 --- a/plugins/fabrique/values-compilers/index.js +++ b/plugins/fabrique/values-compilers/index.js @@ -9,5 +9,7 @@ module.exports = [ "./global-defaults.js", + "../charts/contrib/values-compilers/09-maildev", + "../charts/contrib/values-compilers/10-tpl-meta-values", ] diff --git a/plugins/fabrique/values.yaml b/plugins/fabrique/values.yaml index 8aef2dd17d..440e46d05e 100644 --- a/plugins/fabrique/values.yaml +++ b/plugins/fabrique/values.yaml @@ -2,8 +2,6 @@ pg: enabled: false pgweb: enabled: false -maildev: - enabled: false keycloakx: enabled: false contrib: diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000..f0bfb3e18a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "es2022", + "target": "es2015", + "checkJs": true, + "allowJs": true, + "resolveJsonModule": true, + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "declaration": false, + "noEmit": true, + "strict": false, + "noImplicitAny": false + }, + "exclude": ["node_modules"], + "include": [ + "types/index.d.ts", + "./types/*.d.ts", + "./plugins/**/*.js", + "./plugins/**/*.d.ts", + "./packages/common/**/*.js", + "./packages/common/**/*.d.ts", + "./packages/kontinuous/**/*.js", + "./packages/kontinuous/**/*.d.ts" + ] +} diff --git a/yarn.lock b/yarn.lock index 3f48b7185e..da67505236 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,7 +5,7 @@ __metadata: version: 7 cacheKey: 9 -"@ampproject/remapping@npm:^2.2.0": +"@ampproject/remapping@npm:^2.1.0, @ampproject/remapping@npm:^2.2.0": version: 2.2.0 resolution: "@ampproject/remapping@npm:2.2.0" dependencies: @@ -1460,7 +1460,14 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.5": +"@babel/compat-data@npm:^7.20.0": + version: 7.20.5 + resolution: "@babel/compat-data@npm:7.20.5" + checksum: efee780666054f4ba991376f6bf7855644bfb0d0df92c102e631fb14b17411a31511ada56d421f7c9aa9def17171b5551010e99bb30596e9f5de4bb680eccd4f + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": version: 7.21.0 resolution: "@babel/core@npm:7.21.0" dependencies: @@ -1483,6 +1490,40 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/core@npm:7.20.5" + dependencies: + "@ampproject/remapping": "npm:^2.1.0" + "@babel/code-frame": "npm:^7.18.6" + "@babel/generator": "npm:^7.20.5" + "@babel/helper-compilation-targets": "npm:^7.20.0" + "@babel/helper-module-transforms": "npm:^7.20.2" + "@babel/helpers": "npm:^7.20.5" + "@babel/parser": "npm:^7.20.5" + "@babel/template": "npm:^7.18.10" + "@babel/traverse": "npm:^7.20.5" + "@babel/types": "npm:^7.20.5" + convert-source-map: "npm:^1.7.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.1" + semver: "npm:^6.3.0" + checksum: f8d954631f28cb4b9a54300ba3f70199532fa9a7b4cdeb066a47c1333fa5d9d56e1206f436607d005566c6a0da5ddaf9058c03600fc65acf56fc98bb97338654 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/generator@npm:7.20.5" + dependencies: + "@babel/types": "npm:^7.20.5" + "@jridgewell/gen-mapping": "npm:^0.3.2" + jsesc: "npm:^2.5.1" + checksum: 825c77cc4f4c54367e54b1feb04b89e8d3a48374b2a2199778f44acc32655bb7089bb0c12d71003a55810ee2b50bd650cc34b5640f4cfbf32347c6883a6cd39e + languageName: node + linkType: hard + "@babel/generator@npm:^7.21.0, @babel/generator@npm:^7.21.1, @babel/generator@npm:^7.7.2": version: 7.21.1 resolution: "@babel/generator@npm:7.21.1" @@ -1514,7 +1555,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.0, @babel/helper-compilation-targets@npm:^7.20.7": +"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7": version: 7.20.7 resolution: "@babel/helper-compilation-targets@npm:7.20.7" dependencies: @@ -1529,6 +1570,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/helper-compilation-targets@npm:7.20.0" + dependencies: + "@babel/compat-data": "npm:^7.20.0" + "@babel/helper-validator-option": "npm:^7.18.6" + browserslist: "npm:^4.21.3" + semver: "npm:^6.3.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: c91dd175620b57c9ae8056b80461ed63e0f9bcc6c5b4c8ef613a2fda12789a694a90568f16c32b2aab4637046323f9da0575dc3ab9b383c1d0f67acb0847b40e + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": version: 7.21.0 resolution: "@babel/helper-create-class-features-plugin@npm:7.21.0" @@ -1591,7 +1646,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0, @babel/helper-function-name@npm:^7.21.0": +"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.21.0": version: 7.21.0 resolution: "@babel/helper-function-name@npm:7.21.0" dependencies: @@ -1601,6 +1656,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/helper-function-name@npm:7.19.0" + dependencies: + "@babel/template": "npm:^7.18.10" + "@babel/types": "npm:^7.19.0" + checksum: 65ba2eaad08ba73238aa4f11004a7e0f1d96a57c85863d53571741944986f55f334dfd9a59a3a477daefc7d31bd72df78a78673046082d6625888d3d357d36ed + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" @@ -1644,6 +1709,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.20.2": + version: 7.20.2 + resolution: "@babel/helper-module-transforms@npm:7.20.2" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.18.9" + "@babel/helper-module-imports": "npm:^7.18.6" + "@babel/helper-simple-access": "npm:^7.20.2" + "@babel/helper-split-export-declaration": "npm:^7.18.6" + "@babel/helper-validator-identifier": "npm:^7.19.1" + "@babel/template": "npm:^7.18.10" + "@babel/traverse": "npm:^7.20.1" + "@babel/types": "npm:^7.20.2" + checksum: c156af086f39d0529c4b830194d23fd3cc1d60eb072915c715690b5e347c62219e07b0d5e19c019b40e1d7102a892323cf597ed6c69ba027ce5ed1ec81d87c3f + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" @@ -1748,6 +1829,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.20.5": + version: 7.20.6 + resolution: "@babel/helpers@npm:7.20.6" + dependencies: + "@babel/template": "npm:^7.18.10" + "@babel/traverse": "npm:^7.20.5" + "@babel/types": "npm:^7.20.5" + checksum: 954b1664cc16919cf303a19def1c5b24e58042d3cb77f358c993217a5328ff70a094338c14e39944861d74106e65357627a5e1b7a47310eba2f74314371374c2 + languageName: node + linkType: hard + "@babel/helpers@npm:^7.21.0": version: 7.21.0 resolution: "@babel/helpers@npm:7.21.0" @@ -1779,6 +1871,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/parser@npm:7.20.5" + bin: + parser: ./bin/babel-parser.js + checksum: c40fed9e76e84c95b39b23ac0f93434a5bffae18dae53ff0f2605b7b1723eaf7102a1426a4445de7e557df9e0f5d2e2ddbc89252ac35ece659c813b664758ba8 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" @@ -2743,6 +2844,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.20.1": + version: 7.20.5 + resolution: "@babel/traverse@npm:7.20.5" + dependencies: + "@babel/code-frame": "npm:^7.18.6" + "@babel/generator": "npm:^7.20.5" + "@babel/helper-environment-visitor": "npm:^7.18.9" + "@babel/helper-function-name": "npm:^7.19.0" + "@babel/helper-hoist-variables": "npm:^7.18.6" + "@babel/helper-split-export-declaration": "npm:^7.18.6" + "@babel/parser": "npm:^7.20.5" + "@babel/types": "npm:^7.20.5" + debug: "npm:^4.1.0" + globals: "npm:^11.1.0" + checksum: da0f160f6ef71c3cf0901fc2a491e803a8140e209eb3ff27d1f5ba380454e2ece67a21892e4aa591c053e827666bc13a47876edfa33809a7b2aeece11353e404 + languageName: node + linkType: hard + "@babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.7.2": version: 7.21.2 resolution: "@babel/traverse@npm:7.21.2" @@ -2761,7 +2880,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.21.2 resolution: "@babel/types@npm:7.21.2" dependencies: @@ -2772,6 +2891,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.18.6, @babel/types@npm:^7.19.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/types@npm:7.20.5" + dependencies: + "@babel/helper-string-parser": "npm:^7.19.4" + "@babel/helper-validator-identifier": "npm:^7.19.1" + to-fast-properties: "npm:^2.0.0" + checksum: c7f3c4ae2fa7d1c477a48094f9b0990747aea366bfdb1781095b88f66fbfdc3cd5045a23918eca0ffbc3323d84e674ce81f5f847a0efc17a97a3e268c5b8b456 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -2816,9 +2946,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.0.0": - version: 2.0.0 - resolution: "@eslint/eslintrc@npm:2.0.0" +"@eslint/eslintrc@npm:^1.4.1": + version: 1.4.1 + resolution: "@eslint/eslintrc@npm:1.4.1" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" @@ -2829,14 +2959,7 @@ __metadata: js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 29a8b98afca4e088f84dc1e7be849e51ca6df31172a90ef3898dd201e7e022ee7d665d999b0134849ac7279497d5270867945bdf534ad3ca0ac036e1869b310c - languageName: node - linkType: hard - -"@eslint/js@npm:8.35.0": - version: 8.35.0 - resolution: "@eslint/js@npm:8.35.0" - checksum: ada3a3a42de60014ddae9f2f81e96442168b74151c6785194191f17850497c8750ab0140ca37c143dda1bfaf149cfc63ff28adcf94c41ceada4afc05ff596711 + checksum: 4e469ed508c3154078503b1f22b9d7f2498e76e770ff3f8c61c9961a16760c817e977f2f00b02201d1e91d6a4ebc766c1c67aae9189b00d5c1fe2e7205b6ad72 languageName: node linkType: hard @@ -3023,6 +3146,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: bda80273008b21523feaa0e3917a8fd23ed313c080fbc6e7024b484bade02193fac01ea1ad0b78381017755955edca4992004385ffce6321fc22d7b19ead28f1 + languageName: node + linkType: hard + "@jest/expect@npm:^29.4.3": version: 29.4.3 resolution: "@jest/expect@npm:29.4.3" @@ -3105,6 +3237,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 62575779a4c53ffd4bd7e9042b0a5a65b2c754eddbc36cdecfcec3d9357cc4a5777a6486620580db883662cec3df2b1d3d444c45fd953c16b794e169372fe4be + languageName: node + linkType: hard + "@jest/source-map@npm:^29.4.3": version: 29.4.3 resolution: "@jest/source-map@npm:29.4.3" @@ -3177,6 +3318,20 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: d7219fc465e640fd41359f581014fed5eee76f0d4d69250b24b24147ae0cdaeb2e12aeb6ec73316118063fe69bacd44135d42d03b48444319b0f630ddc88c499 + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.1.0": version: 0.1.1 resolution: "@jridgewell/gen-mapping@npm:0.1.1" @@ -3198,13 +3353,20 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": +"@jridgewell/resolve-uri@npm:3.1.0": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" checksum: 6b641bb7e25bc92a9848898cc91a77a390f393f086297ec2336d911387bdd708919c418e74a22732cfc21d0e7300b94306f437d2e9de5ab58b33ebc6c39d6f9d languageName: node linkType: hard +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.0.7 + resolution: "@jridgewell/resolve-uri@npm:3.0.7" + checksum: 0a3496c6cda457a80e335e836ba3de24468e51f90baf3c637636fb8dcb0e040665c2e6ab901ea6de688c28c67910353967cb0228380ee1ee258b7ff68ea78ee2 + languageName: node + linkType: hard + "@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" @@ -3212,13 +3374,20 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": +"@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" checksum: 2147ea75c966fed8a7d9ed6679b7e8c380fa790a9bea5a64f4ec1c26d24e44b461aa60fc3b228cea03a46708d9d1bcf19508035bf27ad5e8f63d0998ed1d1117 languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.13 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.13" + checksum: e2a993e98217372c43b09c7429f6ba42f85c00655d11b0042a36cb33496444b7a0e31472f149088d2dc2abc761807e3048767cac08e78d100bdf7ffbf511fe91 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -3229,7 +3398,17 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.13 + resolution: "@jridgewell/trace-mapping@npm:0.3.13" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 771b0ff7dc06d1e9cf2e74390f4a75f00cc6ad2e6dca46b78bcfec5768444e1ce1e195ceb9fdd3ea1ed4bbf881fcacbde8c55d690d4403a1774cbe0b88b4f3a2 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17": version: 0.3.17 resolution: "@jridgewell/trace-mapping@npm:0.3.17" dependencies: @@ -3246,6 +3425,39 @@ __metadata: languageName: node linkType: hard +"@kubernetes-models/apimachinery@npm:^1.1.0": + version: 1.1.0 + resolution: "@kubernetes-models/apimachinery@npm:1.1.0" + dependencies: + "@kubernetes-models/base": "npm:^4.0.0" + "@kubernetes-models/validate": "npm:^3.0.0" + tslib: "npm:^2.4.0" + checksum: 45ed2e4a6810472e65ba8aea72260dfdb0d490921636174878058a965484900db19c825f81ec74051aa820462e422992feaa38b68f4a58e7021db709da285a96 + languageName: node + linkType: hard + +"@kubernetes-models/base@npm:^4.0.0": + version: 4.0.0 + resolution: "@kubernetes-models/base@npm:4.0.0" + dependencies: + "@kubernetes-models/validate": "npm:^3.0.0" + is-plain-object: "npm:^5.0.0" + tslib: "npm:^2.4.0" + checksum: 7075ee2cb564ad57a6f8ef660e7c8bcc84a399e7ff2fbd612314843cb3989a69f8697fc4811f13894a92f371795ba2964d3a23cc23a7559ee5bf14782c91a2d1 + languageName: node + linkType: hard + +"@kubernetes-models/validate@npm:^3.0.0": + version: 3.0.0 + resolution: "@kubernetes-models/validate@npm:3.0.0" + dependencies: + ajv: "npm:^8.11.0" + ajv-formats: "npm:^2.1.1" + tslib: "npm:^2.4.0" + checksum: 0abbf823008280cdf8101a1a844edc1173c6209f225fff58850bb98531ec38972cda8d02d985c7d2a8ee90a66d6dacc913cdf88aef6ea33425df1175da3991f4 + languageName: node + linkType: hard + "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -4032,6 +4244,17 @@ __metadata: languageName: node linkType: hard +"@sentry/core@npm:7.30.0": + version: 7.30.0 + resolution: "@sentry/core@npm:7.30.0" + dependencies: + "@sentry/types": "npm:7.30.0" + "@sentry/utils": "npm:7.30.0" + tslib: "npm:^1.9.3" + checksum: d5561d57c0961ceb70dbad64215eb43c31f82b21ff358f4437ce4b2b248baf465f2c2072d079c0eabbabe41bb77a05260582e31ead505037fc496e68d8fdc253 + languageName: node + linkType: hard + "@sentry/core@npm:7.39.0": version: 7.39.0 resolution: "@sentry/core@npm:7.39.0" @@ -4081,7 +4304,7 @@ __metadata: languageName: node linkType: hard -"@sentry/node@npm:^7.20.1, @sentry/node@npm:^7.30.0": +"@sentry/node@npm:^7.20.1": version: 7.39.0 resolution: "@sentry/node@npm:7.39.0" dependencies: @@ -4096,6 +4319,21 @@ __metadata: languageName: node linkType: hard +"@sentry/node@npm:^7.30.0": + version: 7.30.0 + resolution: "@sentry/node@npm:7.30.0" + dependencies: + "@sentry/core": "npm:7.30.0" + "@sentry/types": "npm:7.30.0" + "@sentry/utils": "npm:7.30.0" + cookie: "npm:^0.4.1" + https-proxy-agent: "npm:^5.0.0" + lru_map: "npm:^0.3.3" + tslib: "npm:^1.9.3" + checksum: 3c753b956d0af01e5aec2207ee7706f0f6ffc34becde751fdda5bbfff440a9741604b6b11889397a9b8619d4a7c20f4747582c420e1d7f3645e64131423b1216 + languageName: node + linkType: hard + "@sentry/types@npm:6.19.7": version: 6.19.7 resolution: "@sentry/types@npm:6.19.7" @@ -4103,6 +4341,13 @@ __metadata: languageName: node linkType: hard +"@sentry/types@npm:7.30.0": + version: 7.30.0 + resolution: "@sentry/types@npm:7.30.0" + checksum: d2e6f8cd2735db9522aea8296b88815dbf596803fc8dbd243eaeccdca34a52dc512b29c5f25543101ce3c83b3c191171a47957f71107a416800adfd74f5c04b8 + languageName: node + linkType: hard + "@sentry/types@npm:7.39.0": version: 7.39.0 resolution: "@sentry/types@npm:7.39.0" @@ -4120,6 +4365,16 @@ __metadata: languageName: node linkType: hard +"@sentry/utils@npm:7.30.0": + version: 7.30.0 + resolution: "@sentry/utils@npm:7.30.0" + dependencies: + "@sentry/types": "npm:7.30.0" + tslib: "npm:^1.9.3" + checksum: 77f3c1975c1fc7f78878e5226d6ee7e304e5b7b25683fc3f9c9c6986edd18d2e7f0a03be8ab61d88bb0713d9cb393eb6a56f06c864b85428d29c2102ca441981 + languageName: node + linkType: hard + "@sentry/utils@npm:7.39.0": version: 7.39.0 resolution: "@sentry/utils@npm:7.39.0" @@ -4137,6 +4392,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 7e5f62b0c2c8152c5884d6241720c384d884b4d036c18ae30b03cf3ac79280d4904127b60d61992e6dcb6de3e2d55bc371e38fef7c54279001f9d53e76f4bd33 + languageName: node + linkType: hard + "@sindresorhus/is@npm:4.6.0, @sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" @@ -4339,6 +4601,13 @@ __metadata: languageName: node linkType: hard +"@types/braces@npm:*": + version: 3.0.1 + resolution: "@types/braces@npm:3.0.1" + checksum: c0d610f2474b174dc87946b57a8a7ecf5a14a49ef4217fc1134bcd32bcbd8a07eeaee5ea88b861effeee554cf28dc62867008e39049a574a2162985a40586333 + languageName: node + linkType: hard + "@types/bunyan@npm:1.8.7": version: 1.8.7 resolution: "@types/bunyan@npm:1.8.7" @@ -4457,6 +4726,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^29.5.11": + version: 29.5.11 + resolution: "@types/jest@npm:29.5.11" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 7cec5a92aac6afc52f764dc923dbcd95834081009e1dd8c6c8747833ca269fa338a9053a8e2ef62fada7c0947210e0b53637be6f7844805666f15736b783a5ad + languageName: node + linkType: hard + "@types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.9": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" @@ -4489,7 +4768,70 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.14.175": +"@types/lodash.camelcase@npm:^4.3.7": + version: 4.3.7 + resolution: "@types/lodash.camelcase@npm:4.3.7" + dependencies: + "@types/lodash": "npm:*" + checksum: 62d28c280d3907bd712dc555520785a3573358383c6dea0add004072ac5341ec0b52cf28b858b9bd2327526a8eca95cf977652787e5f2eda21717f091c4996d1 + languageName: node + linkType: hard + +"@types/lodash.clonedeep@npm:^4.5.7": + version: 4.5.7 + resolution: "@types/lodash.clonedeep@npm:4.5.7" + dependencies: + "@types/lodash": "npm:*" + checksum: 4ce7a649b08c6fa5612f1021ec1cede9ac63308d6323022286404ef37364e96492c23a739848f63554ccf1a2c651e156747b9a9ee6893281f464a22e1d4febec + languageName: node + linkType: hard + +"@types/lodash.defaults@npm:^4.2.7": + version: 4.2.7 + resolution: "@types/lodash.defaults@npm:4.2.7" + dependencies: + "@types/lodash": "npm:*" + checksum: 83f056f006753de4544c7a22b12660224efa81db2aae055df17ef926fd30e01da148db8d77a98d2c9ab19fe725be5150ae717d7413151f300bc749cf4d31a890 + languageName: node + linkType: hard + +"@types/lodash.get@npm:^4.4.7": + version: 4.4.7 + resolution: "@types/lodash.get@npm:4.4.7" + dependencies: + "@types/lodash": "npm:*" + checksum: 6b7bb35cc05b17ded0eacb134a31f4d313df35ea309a52013b341ad9def38584785a3e46e300d9c5afd93374a412595c877e24c37ee6eed8a73b0f7afacff43f + languageName: node + linkType: hard + +"@types/lodash.omit@npm:^4.5.7": + version: 4.5.7 + resolution: "@types/lodash.omit@npm:4.5.7" + dependencies: + "@types/lodash": "npm:*" + checksum: 447d964c47216f6af9cb6b90a58fac71a20e991808ae81580551de71432400e1397162c69abedfdffd1a3c1f5c8a483a6be43e0fe5641ac664e911ae77afae78 + languageName: node + linkType: hard + +"@types/lodash.pick@npm:^4.4.7": + version: 4.4.7 + resolution: "@types/lodash.pick@npm:4.4.7" + dependencies: + "@types/lodash": "npm:*" + checksum: 513c48bc9962ee61b5a4fef68b49f8ab3d7cdc8a29a236870afaa278469781a9fb9c43cfe042f96a7f21c9105c257a8d198ed0b009a6f1d231c45d495834eb0e + languageName: node + linkType: hard + +"@types/lodash.set@npm:^4.3.7": + version: 4.3.7 + resolution: "@types/lodash.set@npm:4.3.7" + dependencies: + "@types/lodash": "npm:*" + checksum: 06aa3d7c10d85d15ddb381a09e695aef62f0eccec3021ae5e9ded50e1b64d5adc0eedcb2da913527442b2f6c12eca5ac82efff52091a489ac2234681b7915c8c + languageName: node + linkType: hard + +"@types/lodash@npm:*, @types/lodash@npm:^4.14.175": version: 4.14.191 resolution: "@types/lodash@npm:4.14.191" checksum: e8762fec34eec79828b6b1e08243e25703bfad1b53a7032c0293b69f51d222c0a36ae08d3588ab8147c6a3f478096e02186a860b909cdbe29c7c745cefea2442 @@ -4505,6 +4847,15 @@ __metadata: languageName: node linkType: hard +"@types/micromatch@npm:^4.0.2": + version: 4.0.2 + resolution: "@types/micromatch@npm:4.0.2" + dependencies: + "@types/braces": "npm:*" + checksum: ac7ec28d57ac61a85bd2859c69d096192e8ef66cc9d3c5fcb4531eeec3b090b1ff1be132e65eff6a16be14b9a30083cf488a402c094890c654db861aafee4669 + languageName: node + linkType: hard + "@types/mime@npm:*": version: 3.0.1 resolution: "@types/mime@npm:3.0.1" @@ -4563,6 +4914,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20.10.5": + version: 20.10.5 + resolution: "@types/node@npm:20.10.5" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 8fcf2e6116447efcf61b9bfe5f0043a8a524773d2c0ab6fe019dfbccdf4ee0745ca904387b6250962376db1f3710eec3abb7afa1409205b2798e7e0b9bcf1bc6 + languageName: node + linkType: hard + "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -4570,6 +4930,15 @@ __metadata: languageName: node linkType: hard +"@types/pino@npm:^7.0.5": + version: 7.0.5 + resolution: "@types/pino@npm:7.0.5" + dependencies: + pino: "npm:*" + checksum: 1b0fe47982734322fc9fb054b480d463fa7e9ba98ae8bacc805a801a063e46cca35ddfa78c4e962cb0ff3ea470bc05a2432227a9df671a89dba3735419b2e09e + languageName: node + linkType: hard + "@types/prettier@npm:^2.1.5": version: 2.7.2 resolution: "@types/prettier@npm:2.7.2" @@ -4937,7 +5306,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.4.1, acorn@npm:^8.8.0": +"acorn@npm:^8.4.1": version: 8.8.2 resolution: "acorn@npm:8.8.2" bin: @@ -4946,6 +5315,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.8.0": + version: 8.8.1 + resolution: "acorn@npm:8.8.1" + bin: + acorn: bin/acorn + checksum: f8a84cf59173c5c07cb6b8097c716370f799244189b23d58358eadf9729e0d62660bc11339e03f08517fa33d1ef4b69b84b0bdebe0c0d783acaa8d2c44a66345 + languageName: node + linkType: hard + "add-stream@npm:^1.0.0": version: 1.0.0 resolution: "add-stream@npm:1.0.0" @@ -6292,13 +6670,20 @@ __metadata: languageName: node linkType: hard -"commander@npm:^9.1.0, commander@npm:^9.4.1": +"commander@npm:^9.1.0": version: 9.5.0 resolution: "commander@npm:9.5.0" checksum: 1d09146ccb60400550629bcded4b72eeb100728207ecb2538dd827b19571dc16d3b0ee5da762d9bdbbe680ed5cca6658cac5bfce262b1b73eabe5ef8c15cdd9d languageName: node linkType: hard +"commander@npm:^9.4.1": + version: 9.4.1 + resolution: "commander@npm:9.4.1" + checksum: 7d4c1f3bd4ad451f43fce51b9c73dc2d61fca00a9249196aa2d3d66fc46f2460c917c73ea9221c278fb8d35f496384f5125806e69108581a8e8bc673752c94e6 + languageName: node + linkType: hard + "commit-and-tag-version@npm:^11.0.0": version: 11.1.0 resolution: "commit-and-tag-version@npm:11.1.0" @@ -6483,25 +6868,25 @@ __metadata: languageName: node linkType: hard -"conventional-changelog-conventionalcommits@npm:5.0.0": - version: 5.0.0 - resolution: "conventional-changelog-conventionalcommits@npm:5.0.0" +"conventional-changelog-conventionalcommits@npm:4.6.3, conventional-changelog-conventionalcommits@npm:^4.5.0": + version: 4.6.3 + resolution: "conventional-changelog-conventionalcommits@npm:4.6.3" dependencies: compare-func: "npm:^2.0.0" lodash: "npm:^4.17.15" q: "npm:^1.5.1" - checksum: cd39e90a9637925b99c425197436f6cec1257f3ae82b437edeb93390d4cea90702cff31c06ab4d9dde71ea243cf64f7665eafa019bbfd7735ce2e4d30b9362bf + checksum: f8acf6ce04283f46f74ff7f01f768a0f4592b2c75881c73887d48380725a55b2bbaf318b9e67b560c329bef983a1debce8eb761b6654f1e045edfb29dd764198 languageName: node linkType: hard -"conventional-changelog-conventionalcommits@npm:^4.5.0": - version: 4.6.3 - resolution: "conventional-changelog-conventionalcommits@npm:4.6.3" +"conventional-changelog-conventionalcommits@npm:5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-conventionalcommits@npm:5.0.0" dependencies: compare-func: "npm:^2.0.0" lodash: "npm:^4.17.15" q: "npm:^1.5.1" - checksum: f8acf6ce04283f46f74ff7f01f768a0f4592b2c75881c73887d48380725a55b2bbaf318b9e67b560c329bef983a1debce8eb761b6654f1e045edfb29dd764198 + checksum: cd39e90a9637925b99c425197436f6cec1257f3ae82b437edeb93390d4cea90702cff31c06ab4d9dde71ea243cf64f7665eafa019bbfd7735ce2e4d30b9362bf languageName: node linkType: hard @@ -7040,13 +7425,20 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:4.3.0, deepmerge@npm:^4.2.2": +"deepmerge@npm:4.3.0": version: 4.3.0 resolution: "deepmerge@npm:4.3.0" checksum: 2240994bc74955ad60f0e182725b887a50508916824fd7dd750f642a1561749efda958a56fbe6e9778bf297bc0c4401ee281f774565c33afae6bf4d2c162c801 languageName: node linkType: hard +"deepmerge@npm:^4.2.2": + version: 4.2.2 + resolution: "deepmerge@npm:4.2.2" + checksum: f37e1f5e8cfca71833a43a5d14ad1bf533689b1e5acff72eefa9bdd26f1a4fe80153e29238e8b3052e5f8c4169a95992456f3b60cd50a9db94a84680712a9aca + languageName: node + linkType: hard + "defer-to-connect@npm:^2.0.0": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" @@ -7165,6 +7557,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 5b4f564b24acde410c096cf53c99d72c59439e41e3ae4914c6696251cc680a79c886fe4afe188a7359441543f19534c01ec235d913a7206954af5fd69bde04bf + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -7316,13 +7715,20 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.0.0, dotenv@npm:^16.0.2": +"dotenv@npm:^16.0.0": version: 16.0.3 resolution: "dotenv@npm:16.0.3" checksum: abce82d99b45e2ebbd42625a78cadbfafe03072c15e6538b6a3a7ed204b6e091c0de929dd09231edc61f78afbdcd5b8a2f21b9e933e8ab27d75bee865a0e58c9 languageName: node linkType: hard +"dotenv@npm:^16.0.2": + version: 16.0.2 + resolution: "dotenv@npm:16.0.2" + checksum: 5d6641fbee9e169fdea93c4952c9559230418d9de58ce7c9cb49ae8bca5445686fd8222f952a0b916baa1119eaa4be76d096c3db795395bbf3c0bb1c85e33f8c + languageName: node + linkType: hard + "dotgitignore@npm:^2.1.0": version: 2.1.0 resolution: "dotgitignore@npm:2.1.0" @@ -7718,7 +8124,7 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^8.5.0": +"eslint-config-prettier@npm:^8.6.0": version: 8.6.0 resolution: "eslint-config-prettier@npm:8.6.0" peerDependencies: @@ -7798,9 +8204,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jest@npm:^27.0.0": - version: 27.2.1 - resolution: "eslint-plugin-jest@npm:27.2.1" +"eslint-plugin-jest@npm:^27.2.0": + version: 27.2.0 + resolution: "eslint-plugin-jest@npm:27.2.0" dependencies: "@typescript-eslint/utils": "npm:^5.10.0" peerDependencies: @@ -7811,7 +8217,7 @@ __metadata: optional: true jest: optional: true - checksum: 9192eb15ac584600d8948680d653fef674e4b99fff8e815053a5b142eec66a444e7923271ee584061b46e3c94972d7aa1153af4b451099a8075c0c1d9abd69da + checksum: cb77760cac454db98e3be5622d811440edc758fd6a88b823222d972079968009d2b7188b9000d827f38b1de739d6258c08eb8737293ab02d9460f4daaac36961 languageName: node linkType: hard @@ -7831,7 +8237,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:^4.0.0": +"eslint-plugin-prettier@npm:^4.2.1": version: 4.2.1 resolution: "eslint-plugin-prettier@npm:4.2.1" dependencies: @@ -7907,12 +8313,11 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.26.0": - version: 8.35.0 - resolution: "eslint@npm:8.35.0" +"eslint@npm:^8.31.0": + version: 8.31.0 + resolution: "eslint@npm:8.31.0" dependencies: - "@eslint/eslintrc": "npm:^2.0.0" - "@eslint/js": "npm:8.35.0" + "@eslint/eslintrc": "npm:^1.4.1" "@humanwhocodes/config-array": "npm:^0.11.8" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" @@ -7926,7 +8331,7 @@ __metadata: eslint-utils: "npm:^3.0.0" eslint-visitor-keys: "npm:^3.3.0" espree: "npm:^9.4.0" - esquery: "npm:^1.4.2" + esquery: "npm:^1.4.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" file-entry-cache: "npm:^6.0.1" @@ -7953,7 +8358,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 9e49b49d9f877bcfbf376166e5a870c6a725b1e713e339f05b85a0d70ebd9ab3c72faceac27251b25fbbd53fd06594d6c00b335b5a59de3a36486eeeafa0f2bc + checksum: 2d789efa2ef8b2ae27111107e1796dd78302006618322835e7135afb3e0af5118ba6d2294feb95befe00a3d5feb5c4e1b53435dff15b3e2e91b07016eecc3586 languageName: node linkType: hard @@ -7978,12 +8383,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.4.2 - resolution: "esquery@npm:1.4.2" +"esquery@npm:^1.4.0": + version: 1.4.0 + resolution: "esquery@npm:1.4.0" dependencies: estraverse: "npm:^5.1.0" - checksum: f4f0c6b1c5e2a733ba5a501a3d7847ba56db99cb8b4d76f2a9c57fbf6d282b3e5f7c15ff7178771cc47a863b92a5648ff1b4977b4e9b8d8c36ff9fcb652ebb60 + checksum: 7f287f5390f12feed1b2b4dd42f3a4501774effcbcbb76c340e5b9a3c25a133739dc18657c6103cb520dd4a8814d33ff732587c7de42f0ff51a0deaf4c190428 languageName: node linkType: hard @@ -8111,6 +8516,19 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.0.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 3d48f25f9bab6a2417961b43c98e9d3b6a5e125b8c5bc47d38e7341e514398954fba640a36396670ab857767bb3becf33bd08c917c544d750e84deeee7dba81f + languageName: node + linkType: hard + "expect@npm:^29.4.3": version: 29.4.3 resolution: "expect@npm:29.4.3" @@ -8252,7 +8670,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.9": +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.2": version: 3.2.12 resolution: "fast-glob@npm:3.2.12" dependencies: @@ -8265,6 +8683,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.2.9": + version: 3.2.11 + resolution: "fast-glob@npm:3.2.11" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 73b4cb60ed75a9138533f6020f6c3f451a9d8f0e7e7e38e2555f281c93e9dcef1565e4801dd264d766dd5ade870a4ebd32b113c66fce75ea09bd5bc6dc66b939 + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -9443,7 +9874,7 @@ __metadata: languageName: node linkType: hard -"husky@npm:^8.0.0": +"husky@npm:^8.0.3": version: 8.0.3 resolution: "husky@npm:8.0.3" bin: @@ -9484,13 +9915,20 @@ __metadata: languageName: node linkType: hard -"ignore@npm:5.2.4, ignore@npm:^5.1.1, ignore@npm:^5.2.0": +"ignore@npm:5.2.4, ignore@npm:^5.1.1": version: 5.2.4 resolution: "ignore@npm:5.2.4" checksum: 55c58d848bb753a2b7e0b4a19352f9212eae2e4a05e4a12753e90b921108a6caa140adf958a5084b144bedd886b44e3bc93f6b4839e5aba1fb4a72c6625da4c1 languageName: node linkType: hard +"ignore@npm:^5.2.0": + version: 5.2.0 + resolution: "ignore@npm:5.2.0" + checksum: 0086b6992b2e2c9ec23f009e5939022323f1b4ad291607507045cc67b0a3b5d9724fc425f5300b3ba6d10ef74311bdf71cd26040227c30a182cf1b2a5971226b + languageName: node + linkType: hard + "immediate@npm:~3.0.5": version: 3.0.6 resolution: "immediate@npm:3.0.6" @@ -9701,13 +10139,20 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.1.5, is-callable@npm:^1.2.7": +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.5, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 39d7787a6cd66d620ee4e9d09bb36587c29b39f50550d27dd7bea1d0d46b2a87ad9ac2b3d11f751836f08befc20afc4cb36201de1de26aaf02f298c8c512c102 languageName: node linkType: hard +"is-callable@npm:^1.1.4": + version: 1.2.4 + resolution: "is-callable@npm:1.2.4" + checksum: 6db2b77ca8f98d085e3889dc763b1a39420e6a865a04fc422546c00871c00d8cdfa964d5012011fd6de1d06e375270197565b3437404530fd4d2fc521413c1c0 + languageName: node + linkType: hard + "is-ci@npm:^2.0.0": version: 2.0.0 resolution: "is-ci@npm:2.0.0" @@ -9719,7 +10164,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.11.0": version: 2.11.0 resolution: "is-core-module@npm:2.11.0" dependencies: @@ -9728,6 +10173,15 @@ __metadata: languageName: node linkType: hard +"is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": + version: 2.9.0 + resolution: "is-core-module@npm:2.9.0" + dependencies: + has: "npm:^1.0.3" + checksum: ac7e79bde4fe529a7281a2f7e8e7f8128c26a2fe660d248ff91def539c35c4353a5f9ff65c7d61565c4943f2614b0fc9310447680d397e7ca2564f0729ca6429 + languageName: node + linkType: hard + "is-date-object@npm:^1.0.1": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" @@ -10213,6 +10667,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: e9d50c11fb4832334e1f62b58591805273ec1f5596d901023b62a611b39f0842b01c5f58502bbc88a066eeb9b9639ea15d57558ba814d844545bf68125690d2f + languageName: node + linkType: hard + "jest-docblock@npm:^29.4.3": version: 29.4.3 resolution: "jest-docblock@npm:29.4.3" @@ -10256,6 +10722,13 @@ __metadata: languageName: node linkType: hard +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: e184017775843c429c97023f7b4a82b8c3cdb624b21bcabee3c6d9915dfe889b583f064d1876b725c80bdae694a4fb54f2ac14b25d979dd0b64b5be282202c18 + languageName: node + linkType: hard + "jest-haste-map@npm:^29.4.3": version: 29.4.3 resolution: "jest-haste-map@npm:29.4.3" @@ -10301,6 +10774,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 77bedb2b26108d329c437506ab9c28be8d706f7f7bbbbfa5b71385641501b4f1143628f339ad4b33cc3da59ba3daea35a33a8616c33247fded4f4e26f8c75aa4 + languageName: node + linkType: hard + "jest-message-util@npm:^29.4.3": version: 29.4.3 resolution: "jest-message-util@npm:29.4.3" @@ -10318,6 +10803,23 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 0109a4a777507e0521b9cc537046ef29636388c2ea5bc79ceeecb33c99ee10fa31f3f804730b791b4b8729248356c5fdac437044c9bd63ab8ab0ee209914bdd3 + languageName: node + linkType: hard + "jest-mock@npm:^29.4.3": version: 29.4.3 resolution: "jest-mock@npm:29.4.3" @@ -10491,6 +10993,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: bca94bdfe28adbcf7f1fa929d2de7777e88e3bdf89e4797f33687bf64198ec936386da7009ebc6dfc3221a76b12b7526f1153ba695a0af965d07a4367d1aa5a2 + languageName: node + linkType: hard + "jest-validate@npm:^29.4.3": version: 29.4.3 resolution: "jest-validate@npm:29.4.3" @@ -10817,6 +11333,18 @@ __metadata: languageName: unknown linkType: soft +"kubernetes-models@npm:^4.1.0": + version: 4.1.0 + resolution: "kubernetes-models@npm:4.1.0" + dependencies: + "@kubernetes-models/apimachinery": "npm:^1.1.0" + "@kubernetes-models/base": "npm:^4.0.0" + "@kubernetes-models/validate": "npm:^3.0.0" + tslib: "npm:^2.4.0" + checksum: f13cbd90ab267b91b4ed5e2b9693df3542630bc74a3e64fc5551d0b93a697912c438fdb3d49326a67b1302f155bc5c8a6ac7abd063d9c5336da6dc69f2026709 + languageName: node + linkType: hard + "latest-version@npm:^5.0.0": version: 5.1.0 resolution: "latest-version@npm:5.1.0" @@ -10927,9 +11455,9 @@ __metadata: languageName: node linkType: hard -"lint-staged@npm:^13.0.0": - version: 13.1.2 - resolution: "lint-staged@npm:13.1.2" +"lint-staged@npm:^13.1.0": + version: 13.1.0 + resolution: "lint-staged@npm:13.1.0" dependencies: cli-truncate: "npm:^3.1.0" colorette: "npm:^2.0.19" @@ -10946,7 +11474,7 @@ __metadata: yaml: "npm:^2.1.3" bin: lint-staged: bin/lint-staged.js - checksum: f359c7629a1e94f8c849435aecb6101b4379bfb735d9e9d1ae278b4c640e5c2d0ab640044daebf50a988acd55275c06718654e74d98b76ed7daf57a44f9bc466 + checksum: 7b4aaafc636daea65b3165e6fbc17f88095b86da65ffb32fc81586faf6b61033e42507e5d6f9fc23fe34c6b43c27cfe98d0e308736d53bf133c5fce933ea53e8 languageName: node linkType: hard @@ -11657,7 +12185,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:5.1.6, minimatch@npm:^5.0.1": +"minimatch@npm:5.1.6": version: 5.1.6 resolution: "minimatch@npm:5.1.6" dependencies: @@ -11675,6 +12203,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^5.0.1": + version: 5.1.0 + resolution: "minimatch@npm:5.1.0" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: cf8124b47d19be2d6a4b2cab80114999239ab6a01062e2f0abe666b779de120b6f85ed9a73e3a27b61fa088fb45957929a8fcc727bd20de829d3e4e659ad01ff + languageName: node + linkType: hard + "minimatch@npm:^6.2.0": version: 6.2.0 resolution: "minimatch@npm:6.2.0" @@ -12018,7 +12555,7 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^9.3.0, node-gyp@npm:latest": +"node-gyp@npm:^9.3.0": version: 9.3.1 resolution: "node-gyp@npm:9.3.1" dependencies: @@ -12038,6 +12575,26 @@ __metadata: languageName: node linkType: hard +"node-gyp@npm:latest": + version: 9.0.0 + resolution: "node-gyp@npm:9.0.0" + dependencies: + env-paths: "npm:^2.2.0" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^10.0.3" + nopt: "npm:^5.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" + bin: + node-gyp: bin/node-gyp.js + checksum: 74e3ae5ca2d1e5db13239ba9f364ba75ae22a25aaf8fc798adb5121a60773f10ad877663b676ce35016728b016cd9010506279883bac143e1519996e5fd6c38b + languageName: node + linkType: hard + "node-html-parser@npm:6.1.5": version: 6.1.5 resolution: "node-html-parser@npm:6.1.5" @@ -12092,6 +12649,17 @@ __metadata: languageName: node linkType: hard +"nopt@npm:^5.0.0": + version: 5.0.0 + resolution: "nopt@npm:5.0.0" + dependencies: + abbrev: "npm:1" + bin: + nopt: bin/nopt.js + checksum: cb0f3672738e989b12d8459f30366e8a89f79462581a09816cbbd575e272bc0ae2a135ac0b60647748be64100787d631cd0ac18157d519021336ae277e3362a3 + languageName: node + linkType: hard + "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -12906,6 +13474,27 @@ __metadata: languageName: node linkType: hard +"pino@npm:*": + version: 8.8.0 + resolution: "pino@npm:8.8.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.1.1" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:v1.0.0" + pino-std-serializers: "npm:^6.0.0" + process-warning: "npm:^2.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + sonic-boom: "npm:^3.1.0" + thread-stream: "npm:^2.0.0" + bin: + pino: bin.js + checksum: 2356ad5ab8b85aca7092707a577521c9d3d8ef3ca7b8e70151402cb69cc37ad25f958fdca3ed32eb2da9fae15cb36e41279eeceff7f6cd91bd60706826ab20c6 + languageName: node + linkType: hard + "pino@npm:^7.9.2": version: 7.11.0 resolution: "pino@npm:7.11.0" @@ -12987,7 +13576,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:2.8.4, prettier@npm:^2.6.2": +"prettier@npm:2.8.4": version: 2.8.4 resolution: "prettier@npm:2.8.4" bin: @@ -12996,6 +13585,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^2.8.1": + version: 2.8.1 + resolution: "prettier@npm:2.8.1" + bin: + prettier: bin-prettier.js + checksum: 06a74a0f7aa5877a3912aeeeae3558014b10e438d945f88bd313222e75e7282eb7f41299d204353ec7d00b208377ddc36ffe4c7d2151f0502e783139b934d66d + languageName: node + linkType: hard + "pretty-bytes@npm:^5.1.0": version: 5.6.0 resolution: "pretty-bytes@npm:5.6.0" @@ -13003,6 +13601,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: e78e4aa3842966fa2274cf97027f3b2b211ed2aa6b46ae43aa45f2a0ace5415c977ab6d0f18c9750d53facf78070b54f9364a36aa8ada011b865689e4e3d0592 + languageName: node + linkType: hard + "pretty-format@npm:^29.4.3": version: 29.4.3 resolution: "pretty-format@npm:29.4.3" @@ -13173,9 +13782,9 @@ __metadata: linkType: hard "punycode@npm:^2.1.0": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: c2b408c805927a6614ef581bd3d00deca1fef9f2da0ec95cecaedf6a985d8596a29e931e31f80f7313f94257895f9ac6cf4c2ae81cdca04964daf9c3c3d221c1 + version: 2.1.1 + resolution: "punycode@npm:2.1.1" + checksum: fd728ef9db90e7b4db37d5c4937d6c6302cf4f64748b2dea3abbf1efd21e6193bb670efb7814766c858b2e1ccdb65ce34e44b498d734922e1dcb2a8623a925d8 languageName: node linkType: hard @@ -13950,14 +14559,14 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: da8a21b3336a21c152eb3ba8ab41acde5772644f026d4b6e5f9fd8afa4f0cf407c113b19a362580fab9aea8beea295465432fc7684f9ff38aac559bb1b5528cd languageName: node linkType: hard -"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": +"safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" checksum: 86939c6de6b62c1d39b7da860a56d5e50ede9b0ab35a91b0620bff8a96f1f798084ff910059f605087c2c500dc23dfdf77ff5bc3bcc8d4d38e3d634de2e3e426 @@ -13991,13 +14600,20 @@ __metadata: languageName: node linkType: hard -"safe-stable-stringify@npm:2.4.2, safe-stable-stringify@npm:^2.1.0, safe-stable-stringify@npm:^2.3.1, safe-stable-stringify@npm:^2.4.1": +"safe-stable-stringify@npm:2.4.2, safe-stable-stringify@npm:^2.4.1": version: 2.4.2 resolution: "safe-stable-stringify@npm:2.4.2" checksum: a5c53e0aa348f3e73b1d8d2853dfec79dae955f7f864e7a3a112079b38e2900c8320d3ae2c5dc6704a2d2143883d4543d6ec14812017cd6c03bc01c10b671559 languageName: node linkType: hard +"safe-stable-stringify@npm:^2.1.0, safe-stable-stringify@npm:^2.3.1": + version: 2.3.1 + resolution: "safe-stable-stringify@npm:2.3.1" + checksum: a796c980e9fcb32651f15d4546af63834bd2b3c0c2724a5978c280891815234b37e1381bad00221b395102c2068d97013c5856288aaeec91b92e748865e27a50 + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -14072,7 +14688,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.3.8, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": +"semver@npm:7.3.8, semver@npm:^7.0.0, semver@npm:^7.1.2, semver@npm:^7.3.8": version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: @@ -14092,6 +14708,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7": + version: 7.3.7 + resolution: "semver@npm:7.3.7" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 67bcf24790dcba9c20b2cd4c8ade19eebbcb10c8868453570749b47b77bd5c7da503478997a7a3f663d5b2976ac39c545f38d2d9e7dfcc693cb87f4068f93f8e + languageName: node + linkType: hard + "semver@npm:~7.0.0": version: 7.0.0 resolution: "semver@npm:7.0.0" @@ -14377,7 +15004,7 @@ __metadata: languageName: node linkType: hard -"sonic-boom@npm:^3.0.0, sonic-boom@npm:^3.1.0": +"sonic-boom@npm:^3.0.0": version: 3.2.1 resolution: "sonic-boom@npm:3.2.1" dependencies: @@ -14386,6 +15013,15 @@ __metadata: languageName: node linkType: hard +"sonic-boom@npm:^3.1.0": + version: 3.2.0 + resolution: "sonic-boom@npm:3.2.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: fcee5153801623d8a95da6cfc654620ec812899f3f5071a03c4e9280fb0e854c70ab7ce71eaef4fc538321a5aba657ee1544a2fe69c19de36a832eaae39e4675 + languageName: node + linkType: hard + "sort-keys@npm:^4.2.0": version: 4.2.0 resolution: "sort-keys@npm:4.2.0" @@ -14531,6 +15167,30 @@ __metadata: languageName: node linkType: hard +"standard-version@npm:^9.5.0": + version: 9.5.0 + resolution: "standard-version@npm:9.5.0" + dependencies: + chalk: "npm:^2.4.2" + conventional-changelog: "npm:3.1.25" + conventional-changelog-config-spec: "npm:2.1.0" + conventional-changelog-conventionalcommits: "npm:4.6.3" + conventional-recommended-bump: "npm:6.1.0" + detect-indent: "npm:^6.0.0" + detect-newline: "npm:^3.1.0" + dotgitignore: "npm:^2.1.0" + figures: "npm:^3.1.0" + find-up: "npm:^5.0.0" + git-semver-tags: "npm:^4.0.0" + semver: "npm:^7.1.1" + stringify-package: "npm:^1.0.1" + yargs: "npm:^16.0.0" + bin: + standard-version: bin/cli.js + checksum: 06d7bdb6115e3760ef6530310c0b63a7091f11f6e2aa81fd53d7cfee490fa4d8cfd2db32b09d386a1e6da44a87b343e79f0c8227118dc61ba23027e2f66d33d2 + languageName: node + linkType: hard + "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" @@ -14663,16 +15323,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: c6b892bdb15861a68c4f9599bdff3909c70b1a2cee73d226a235b8fbadfc0aa060bdd265cb3fd86e856cee6d98cd0d657f84098cb51241f4fae19d0cacf9e13e - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" dependencies: @@ -15211,7 +15862,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.5.0, tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.5.0": +"tslib@npm:2.5.0, tslib@npm:^2.3.1, tslib@npm:^2.5.0": version: 2.5.0 resolution: "tslib@npm:2.5.0" checksum: 5a6ee935f56cd653af29de928483acbab7323f964b053e98b6b318abc69431fb0e4f660c4f4a396e2e93852510bef25eeb9f1d951d060b2d7bcc313811e5da6f @@ -15225,6 +15876,20 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.1.0": + version: 2.4.0 + resolution: "tslib@npm:2.4.0" + checksum: 022a70708abbc3491734959effd9a87e6e0af5932b61d0c9f1d07b8b80cabbbfc9fc9e9c0fe86e5ab2d32d766ae30117edf00b02d170ff255ab7e60361a4b711 + languageName: node + linkType: hard + +"tslib@npm:^2.4.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: e5654691294dfbc49d7f37c8476b11a90ab8a0af4ad8cc968af1d013600e84ecfcd9a68e1cb89f5dcfe5c88872e3fbacea830d237cfa063498115a88f4bd2de6 + languageName: node + linkType: hard + "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -15387,6 +16052,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:^4.9.4": + version: 4.9.4 + resolution: "typescript@npm:4.9.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: b142d5e50785d0e5055771e4d9e712b01be58985ff29be3d3acc64f0fddd5fd8ade8b28583ba502f2565783c23bd5b509c5abcc1a93a2d7d4f05b8e4ee731fc9 + languageName: node + linkType: hard + "typescript@patch:typescript@npm%3A^4.7.4#optional!builtin": version: 4.9.5 resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=23ec76" @@ -15397,6 +16072,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A^4.9.4#optional!builtin": + version: 4.9.4 + resolution: "typescript@patch:typescript@npm%3A4.9.4#optional!builtin::version=4.9.4&hash=23ec76" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 8944d2310e83395ea5b50a4f3d12fbd8f834a9fd8b0b9a2316f24e78890b04d0015a434d8d825a84971caf3c4bd0d52c79f38d3dce80e05a1892dc9f7fa611f8 + languageName: node + linkType: hard + "uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": version: 1.0.6 resolution: "uc.micro@npm:1.0.6" @@ -15449,6 +16134,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 7f556493e22e9023f1f9be0d516f5c3cf74d1d6a090c2701ada5117e99900e8cdf8b5540ad3ceed1a672d3532bdfcd0149c444b980731aacc840eb0660ba8587 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -16092,6 +16784,13 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^21.0.0": + version: 21.0.1 + resolution: "yargs-parser@npm:21.0.1" + checksum: acaedd6c21306da55dfabb5ea5967012a322bb103eab6034cee3ace61cefda1faaac89ea10bdee3bdfed2904f43cf71f346ccecf72e85b5005e6b2b2d17201d5 + languageName: node + linkType: hard + "yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -16133,7 +16832,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.0, yargs@npm:^17.3.1, yargs@npm:^17.6.2": +"yargs@npm:^17.0.0, yargs@npm:^17.6.2": version: 17.7.1 resolution: "yargs@npm:17.7.1" dependencies: @@ -16148,6 +16847,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.3.1": + version: 17.5.1 + resolution: "yargs@npm:17.5.1" + dependencies: + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.0.0" + checksum: 73e3e3f22a5e278bd335bd2c61bbfdae8181ecb178c304ca8438a3f34065e63885639b81e01c6ffee44dfeee7172f224c857feaec0ac2a940580b93b626f5080 + languageName: node + linkType: hard + "yauzl@npm:^2.10.0, yauzl@npm:^2.4.2": version: 2.10.0 resolution: "yauzl@npm:2.10.0" @@ -16272,22 +16986,36 @@ __metadata: version: 0.0.0-use.local resolution: "~dev@workspace:." dependencies: + "@types/jest": "npm:^29.5.11" + "@types/lodash.camelcase": "npm:^4.3.7" + "@types/lodash.clonedeep": "npm:^4.5.7" + "@types/lodash.defaults": "npm:^4.2.7" + "@types/lodash.get": "npm:^4.4.7" + "@types/lodash.omit": "npm:^4.5.7" + "@types/lodash.pick": "npm:^4.4.7" + "@types/lodash.set": "npm:^4.3.7" + "@types/micromatch": "npm:^4.0.2" + "@types/node": "npm:^20.10.5" + "@types/pino": "npm:^7.0.5" commit-and-tag-version: "npm:^11.0.0" docsify-cli: "npm:^4.4.4" - eslint: "npm:^8.26.0" + eslint: "npm:^8.31.0" eslint-config-airbnb-base: "npm:^15.0.0" - eslint-config-prettier: "npm:^8.5.0" + eslint-config-prettier: "npm:^8.6.0" eslint-import-resolver-alias: "npm:^1.1.2" eslint-plugin-import: "npm:^2.26.0" - eslint-plugin-jest: "npm:^27.0.0" + eslint-plugin-jest: "npm:^27.2.0" eslint-plugin-node: "npm:^11.1.0" - eslint-plugin-prettier: "npm:^4.0.0" - fs-extra: "npm:^11.1.1" - husky: "npm:^8.0.0" + eslint-plugin-prettier: "npm:^4.2.1" + fs-extra: "npm:^11.1.0" + husky: "npm:^8.0.3" js-yaml: "npm:^4.1.0" - lint-staged: "npm:^13.0.0" - prettier: "npm:^2.6.2" + kubernetes-models: "npm:^4.1.0" + lint-staged: "npm:^13.1.0" + prettier: "npm:^2.8.1" renovate: "npm:^35.0.0" + standard-version: "npm:^9.5.0" + typescript: "npm:^4.9.4" ~dev-tools: "workspace:^" languageName: unknown linkType: soft